|
@ -398,6 +398,8 @@ Error DirAccessPack::change_dir(String p_dir) {
|
|||
|
||||
nd = nd.simplify_path();
|
||||
|
||||
if (nd == "") nd = ".";
|
||||
|
||||
if (nd.begins_with("/")) {
|
||||
nd = nd.replace_first("/", "");
|
||||
absolute = true;
|
||||
|
|
|
@ -1,658 +0,0 @@
|
|||
Import('env')
|
||||
Import('env_drivers')
|
||||
|
||||
openssl_sources = [
|
||||
"ssl/t1_lib.c",
|
||||
"ssl/t1_ext.c",
|
||||
"ssl/s3_srvr.c",
|
||||
"ssl/t1_enc.c",
|
||||
"ssl/t1_meth.c",
|
||||
"ssl/s23_clnt.c",
|
||||
"ssl/ssl_asn1.c",
|
||||
"ssl/tls_srp.c",
|
||||
"ssl/kssl.c",
|
||||
"ssl/d1_both.c",
|
||||
"ssl/t1_clnt.c",
|
||||
"ssl/bio_ssl.c",
|
||||
"ssl/d1_srtp.c",
|
||||
"ssl/t1_reneg.c",
|
||||
"ssl/ssl_cert.c",
|
||||
"ssl/s3_lib.c",
|
||||
"ssl/d1_srvr.c",
|
||||
"ssl/s23_meth.c",
|
||||
"ssl/ssl_stat.c",
|
||||
"ssl/ssl_err.c",
|
||||
"ssl/ssl_algs.c",
|
||||
"ssl/s3_cbc.c",
|
||||
"ssl/d1_clnt.c",
|
||||
"ssl/s3_pkt.c",
|
||||
"ssl/d1_meth.c",
|
||||
"ssl/s3_both.c",
|
||||
"ssl/s2_enc.c",
|
||||
"ssl/s3_meth.c",
|
||||
"ssl/s3_enc.c",
|
||||
"ssl/s23_pkt.c",
|
||||
"ssl/s2_pkt.c",
|
||||
"ssl/d1_pkt.c",
|
||||
"ssl/ssl_rsa.c",
|
||||
"ssl/s23_srvr.c",
|
||||
"ssl/s2_meth.c",
|
||||
"ssl/s3_clnt.c",
|
||||
"ssl/s23_lib.c",
|
||||
"ssl/t1_srvr.c",
|
||||
"ssl/ssl_lib.c",
|
||||
"ssl/ssl_txt.c",
|
||||
"ssl/s2_srvr.c",
|
||||
"ssl/ssl_sess.c",
|
||||
"ssl/s2_clnt.c",
|
||||
"ssl/d1_lib.c",
|
||||
"ssl/s2_lib.c",
|
||||
"ssl/ssl_err2.c",
|
||||
"ssl/ssl_ciph.c",
|
||||
"crypto/dsa/dsa_lib.c",
|
||||
"crypto/dsa/dsa_pmeth.c",
|
||||
"crypto/dsa/dsa_ossl.c",
|
||||
"crypto/dsa/dsa_gen.c",
|
||||
"crypto/dsa/dsa_asn1.c",
|
||||
"crypto/dsa/dsa_prn.c",
|
||||
"crypto/dsa/dsa_sign.c",
|
||||
"crypto/dsa/dsa_key.c",
|
||||
"crypto/dsa/dsa_vrf.c",
|
||||
"crypto/dsa/dsa_err.c",
|
||||
"crypto/dsa/dsa_ameth.c",
|
||||
"crypto/dsa/dsa_depr.c",
|
||||
"crypto/x509/x509_lu.c",
|
||||
"crypto/x509/x509cset.c",
|
||||
"crypto/x509/x509_set.c",
|
||||
"crypto/x509/x509_d2.c",
|
||||
"crypto/x509/x509_txt.c",
|
||||
"crypto/x509/x509rset.c",
|
||||
"crypto/x509/by_dir.c",
|
||||
"crypto/x509/x509_vpm.c",
|
||||
"crypto/x509/x509_vfy.c",
|
||||
"crypto/x509/x509_trs.c",
|
||||
"crypto/x509/by_file.c",
|
||||
"crypto/x509/x509_obj.c",
|
||||
"crypto/x509/x509spki.c",
|
||||
"crypto/x509/x509_v3.c",
|
||||
"crypto/x509/x509_req.c",
|
||||
"crypto/x509/x509_att.c",
|
||||
"crypto/x509/x_all.c",
|
||||
"crypto/x509/x509_ext.c",
|
||||
"crypto/x509/x509type.c",
|
||||
"crypto/x509/x509_def.c",
|
||||
"crypto/x509/x509_err.c",
|
||||
"crypto/x509/x509name.c",
|
||||
"crypto/x509/x509_r2x.c",
|
||||
"crypto/x509/x509_cmp.c",
|
||||
"crypto/asn1/x_pkey.c",
|
||||
"crypto/asn1/a_gentm.c",
|
||||
"crypto/asn1/x_sig.c",
|
||||
"crypto/asn1/t_req.c",
|
||||
"crypto/asn1/t_pkey.c",
|
||||
"crypto/asn1/p8_pkey.c",
|
||||
"crypto/asn1/a_i2d_fp.c",
|
||||
"crypto/asn1/x_val.c",
|
||||
"crypto/asn1/f_string.c",
|
||||
"crypto/asn1/p5_pbe.c",
|
||||
"crypto/asn1/bio_ndef.c",
|
||||
"crypto/asn1/a_bool.c",
|
||||
"crypto/asn1/asn1_gen.c",
|
||||
"crypto/asn1/x_algor.c",
|
||||
"crypto/asn1/bio_asn1.c",
|
||||
"crypto/asn1/asn_mime.c",
|
||||
"crypto/asn1/t_x509.c",
|
||||
"crypto/asn1/a_strex.c",
|
||||
"crypto/asn1/x_nx509.c",
|
||||
"crypto/asn1/asn1_err.c",
|
||||
"crypto/asn1/x_crl.c",
|
||||
"crypto/asn1/a_print.c",
|
||||
"crypto/asn1/a_type.c",
|
||||
"crypto/asn1/tasn_new.c",
|
||||
"crypto/asn1/n_pkey.c",
|
||||
"crypto/asn1/x_bignum.c",
|
||||
"crypto/asn1/asn_pack.c",
|
||||
"crypto/asn1/evp_asn1.c",
|
||||
"crypto/asn1/t_bitst.c",
|
||||
"crypto/asn1/x_req.c",
|
||||
"crypto/asn1/a_time.c",
|
||||
"crypto/asn1/x_name.c",
|
||||
"crypto/asn1/x_pubkey.c",
|
||||
"crypto/asn1/tasn_typ.c",
|
||||
"crypto/asn1/asn_moid.c",
|
||||
"crypto/asn1/a_utctm.c",
|
||||
"crypto/asn1/asn1_lib.c",
|
||||
"crypto/asn1/x_x509a.c",
|
||||
"crypto/asn1/a_set.c",
|
||||
"crypto/asn1/t_crl.c",
|
||||
"crypto/asn1/p5_pbev2.c",
|
||||
"crypto/asn1/tasn_enc.c",
|
||||
"crypto/asn1/a_mbstr.c",
|
||||
"crypto/asn1/tasn_dec.c",
|
||||
"crypto/asn1/x_x509.c",
|
||||
"crypto/asn1/a_octet.c",
|
||||
"crypto/asn1/x_long.c",
|
||||
"crypto/asn1/a_bytes.c",
|
||||
"crypto/asn1/t_x509a.c",
|
||||
"crypto/asn1/a_enum.c",
|
||||
"crypto/asn1/a_int.c",
|
||||
"crypto/asn1/tasn_prn.c",
|
||||
"crypto/asn1/i2d_pr.c",
|
||||
"crypto/asn1/a_utf8.c",
|
||||
"crypto/asn1/t_spki.c",
|
||||
"crypto/asn1/a_digest.c",
|
||||
"crypto/asn1/a_dup.c",
|
||||
"crypto/asn1/i2d_pu.c",
|
||||
"crypto/asn1/a_verify.c",
|
||||
"crypto/asn1/f_enum.c",
|
||||
"crypto/asn1/a_sign.c",
|
||||
"crypto/asn1/d2i_pr.c",
|
||||
"crypto/asn1/asn1_par.c",
|
||||
"crypto/asn1/x_spki.c",
|
||||
"crypto/asn1/a_d2i_fp.c",
|
||||
"crypto/asn1/f_int.c",
|
||||
"crypto/asn1/x_exten.c",
|
||||
"crypto/asn1/tasn_utl.c",
|
||||
"crypto/asn1/nsseq.c",
|
||||
"crypto/asn1/a_bitstr.c",
|
||||
"crypto/asn1/x_info.c",
|
||||
"crypto/asn1/a_strnid.c",
|
||||
"crypto/asn1/a_object.c",
|
||||
"crypto/asn1/tasn_fre.c",
|
||||
"crypto/asn1/d2i_pu.c",
|
||||
"crypto/asn1/ameth_lib.c",
|
||||
"crypto/asn1/x_attrib.c",
|
||||
"crypto/evp/m_sha.c",
|
||||
"crypto/evp/e_camellia.c",
|
||||
"crypto/evp/e_aes.c",
|
||||
"crypto/evp/bio_b64.c",
|
||||
"crypto/evp/m_sigver.c",
|
||||
"crypto/evp/m_wp.c",
|
||||
"crypto/evp/m_sha1.c",
|
||||
"crypto/evp/p_seal.c",
|
||||
"crypto/evp/c_alld.c",
|
||||
"crypto/evp/p5_crpt.c",
|
||||
"crypto/evp/e_rc4.c",
|
||||
"crypto/evp/m_ecdsa.c",
|
||||
"crypto/evp/bio_enc.c",
|
||||
"crypto/evp/e_des3.c",
|
||||
"crypto/evp/m_null.c",
|
||||
"crypto/evp/bio_ok.c",
|
||||
"crypto/evp/pmeth_gn.c",
|
||||
"crypto/evp/e_rc5.c",
|
||||
"crypto/evp/e_rc2.c",
|
||||
"crypto/evp/p_dec.c",
|
||||
"crypto/evp/p_verify.c",
|
||||
"crypto/evp/e_rc4_hmac_md5.c",
|
||||
"crypto/evp/pmeth_lib.c",
|
||||
"crypto/evp/m_ripemd.c",
|
||||
"crypto/evp/m_md5.c",
|
||||
"crypto/evp/e_bf.c",
|
||||
"crypto/evp/p_enc.c",
|
||||
"crypto/evp/m_dss.c",
|
||||
"crypto/evp/bio_md.c",
|
||||
"crypto/evp/evp_pbe.c",
|
||||
"crypto/evp/e_seed.c",
|
||||
"crypto/evp/e_cast.c",
|
||||
"crypto/evp/p_open.c",
|
||||
"crypto/evp/p5_crpt2.c",
|
||||
"crypto/evp/m_dss1.c",
|
||||
"crypto/evp/names.c",
|
||||
"crypto/evp/evp_acnf.c",
|
||||
"crypto/evp/e_des.c",
|
||||
"crypto/evp/evp_cnf.c",
|
||||
"crypto/evp/evp_lib.c",
|
||||
"crypto/evp/digest.c",
|
||||
"crypto/evp/evp_err.c",
|
||||
"crypto/evp/evp_enc.c",
|
||||
"crypto/evp/e_old.c",
|
||||
"crypto/evp/c_all.c",
|
||||
"crypto/evp/m_md2.c",
|
||||
"crypto/evp/e_xcbc_d.c",
|
||||
"crypto/evp/pmeth_fn.c",
|
||||
"crypto/evp/p_lib.c",
|
||||
"crypto/evp/evp_key.c",
|
||||
"crypto/evp/encode.c",
|
||||
"crypto/evp/e_aes_cbc_hmac_sha1.c",
|
||||
"crypto/evp/e_aes_cbc_hmac_sha256.c",
|
||||
"crypto/evp/m_mdc2.c",
|
||||
"crypto/evp/e_null.c",
|
||||
"crypto/evp/p_sign.c",
|
||||
"crypto/evp/e_idea.c",
|
||||
"crypto/evp/c_allc.c",
|
||||
"crypto/evp/evp_pkey.c",
|
||||
"crypto/evp/m_md4.c",
|
||||
"crypto/ex_data.c",
|
||||
"crypto/pkcs12/p12_p8e.c",
|
||||
"crypto/pkcs12/p12_crt.c",
|
||||
"crypto/pkcs12/p12_utl.c",
|
||||
"crypto/pkcs12/p12_attr.c",
|
||||
"crypto/pkcs12/p12_npas.c",
|
||||
"crypto/pkcs12/p12_decr.c",
|
||||
"crypto/pkcs12/p12_init.c",
|
||||
"crypto/pkcs12/p12_kiss.c",
|
||||
"crypto/pkcs12/p12_add.c",
|
||||
"crypto/pkcs12/p12_p8d.c",
|
||||
"crypto/pkcs12/p12_mutl.c",
|
||||
"crypto/pkcs12/p12_crpt.c",
|
||||
"crypto/pkcs12/pk12err.c",
|
||||
"crypto/pkcs12/p12_asn.c",
|
||||
"crypto/pkcs12/p12_key.c",
|
||||
"crypto/ecdh/ech_key.c",
|
||||
"crypto/ecdh/ech_ossl.c",
|
||||
"crypto/ecdh/ech_lib.c",
|
||||
"crypto/ecdh/ech_err.c",
|
||||
"crypto/ecdh/ech_kdf.c",
|
||||
"crypto/o_str.c",
|
||||
"crypto/conf/conf_api.c",
|
||||
"crypto/conf/conf_err.c",
|
||||
"crypto/conf/conf_def.c",
|
||||
"crypto/conf/conf_lib.c",
|
||||
"crypto/conf/conf_mall.c",
|
||||
"crypto/conf/conf_sap.c",
|
||||
"crypto/conf/conf_mod.c",
|
||||
"crypto/ebcdic.c",
|
||||
"crypto/ecdsa/ecs_lib.c",
|
||||
"crypto/ecdsa/ecs_asn1.c",
|
||||
"crypto/ecdsa/ecs_ossl.c",
|
||||
"crypto/ecdsa/ecs_vrf.c",
|
||||
"crypto/ecdsa/ecs_sign.c",
|
||||
"crypto/ecdsa/ecs_err.c",
|
||||
"crypto/dso/dso_win32.c",
|
||||
"crypto/dso/dso_lib.c",
|
||||
"crypto/dso/dso_dlfcn.c",
|
||||
"crypto/dso/dso_dl.c",
|
||||
"crypto/dso/dso_beos.c",
|
||||
"crypto/dso/dso_null.c",
|
||||
"crypto/dso/dso_vms.c",
|
||||
"crypto/dso/dso_err.c",
|
||||
"crypto/dso/dso_openssl.c",
|
||||
"crypto/cryptlib.c",
|
||||
"crypto/md5/md5_one.c",
|
||||
"crypto/md5/md5_dgst.c",
|
||||
"crypto/pkcs7/pkcs7err.c",
|
||||
"crypto/pkcs7/pk7_smime.c",
|
||||
"crypto/pkcs7/bio_pk7.c",
|
||||
"crypto/pkcs7/pk7_mime.c",
|
||||
"crypto/pkcs7/pk7_lib.c",
|
||||
"crypto/pkcs7/pk7_asn1.c",
|
||||
"crypto/pkcs7/pk7_doit.c",
|
||||
"crypto/pkcs7/pk7_attr.c",
|
||||
"crypto/md4/md4_one.c",
|
||||
"crypto/md4/md4_dgst.c",
|
||||
"crypto/o_dir.c",
|
||||
"crypto/buffer/buf_err.c",
|
||||
"crypto/buffer/buf_str.c",
|
||||
"crypto/buffer/buffer.c",
|
||||
"crypto/cms/cms_lib.c",
|
||||
"crypto/cms/cms_io.c",
|
||||
"crypto/cms/cms_err.c",
|
||||
"crypto/cms/cms_dd.c",
|
||||
"crypto/cms/cms_smime.c",
|
||||
"crypto/cms/cms_att.c",
|
||||
"crypto/cms/cms_pwri.c",
|
||||
"crypto/cms/cms_cd.c",
|
||||
"crypto/cms/cms_sd.c",
|
||||
"crypto/cms/cms_asn1.c",
|
||||
"crypto/cms/cms_env.c",
|
||||
"crypto/cms/cms_enc.c",
|
||||
"crypto/cms/cms_ess.c",
|
||||
"crypto/cms/cms_kari.c",
|
||||
"crypto/mem_dbg.c",
|
||||
"crypto/uid.c",
|
||||
"crypto/stack/stack.c",
|
||||
"crypto/ec/ec_ameth.c",
|
||||
"crypto/ec/ec_err.c",
|
||||
"crypto/ec/ec_lib.c",
|
||||
"crypto/ec/ec_curve.c",
|
||||
"crypto/ec/ec_oct.c",
|
||||
"crypto/ec/ec_asn1.c",
|
||||
"crypto/ec/ecp_oct.c",
|
||||
"crypto/ec/ec_print.c",
|
||||
"crypto/ec/ec2_smpl.c",
|
||||
"crypto/ec/ecp_nistp224.c",
|
||||
"crypto/ec/ec2_oct.c",
|
||||
"crypto/ec/eck_prn.c",
|
||||
"crypto/ec/ec_key.c",
|
||||
"crypto/ec/ecp_nist.c",
|
||||
"crypto/ec/ec_check.c",
|
||||
"crypto/ec/ecp_smpl.c",
|
||||
"crypto/ec/ec2_mult.c",
|
||||
"crypto/ec/ecp_mont.c",
|
||||
"crypto/ec/ecp_nistp521.c",
|
||||
"crypto/ec/ec_mult.c",
|
||||
"crypto/ec/ecp_nistputil.c",
|
||||
"crypto/ec/ec_pmeth.c",
|
||||
"crypto/ec/ec_cvt.c",
|
||||
"crypto/ec/ecp_nistp256.c",
|
||||
"crypto/krb5/krb5_asn.c",
|
||||
"crypto/hmac/hmac.c",
|
||||
"crypto/hmac/hm_ameth.c",
|
||||
"crypto/hmac/hm_pmeth.c",
|
||||
"crypto/comp/c_rle.c",
|
||||
"crypto/comp/c_zlib.c",
|
||||
"crypto/comp/comp_lib.c",
|
||||
"crypto/comp/comp_err.c",
|
||||
"crypto/des/fcrypt.c",
|
||||
"crypto/des/str2key.c",
|
||||
"crypto/des/cbc_cksm.c",
|
||||
"crypto/des/des_enc.c",
|
||||
"crypto/des/ofb_enc.c",
|
||||
"crypto/des/read2pwd.c",
|
||||
"crypto/des/ecb3_enc.c",
|
||||
"crypto/des/rand_key.c",
|
||||
"crypto/des/cfb64ede.c",
|
||||
"crypto/des/rpc_enc.c",
|
||||
"crypto/des/ofb64ede.c",
|
||||
"crypto/des/qud_cksm.c",
|
||||
"crypto/des/enc_writ.c",
|
||||
"crypto/des/set_key.c",
|
||||
"crypto/des/xcbc_enc.c",
|
||||
"crypto/des/fcrypt_b.c",
|
||||
"crypto/des/ede_cbcm_enc.c",
|
||||
"crypto/des/des_old2.c",
|
||||
"crypto/des/cfb_enc.c",
|
||||
"crypto/des/ecb_enc.c",
|
||||
"crypto/des/enc_read.c",
|
||||
"crypto/des/des_old.c",
|
||||
"crypto/des/ofb64enc.c",
|
||||
"crypto/des/pcbc_enc.c",
|
||||
"crypto/des/cbc_enc.c",
|
||||
"crypto/des/cfb64enc.c",
|
||||
"crypto/lhash/lh_stats.c",
|
||||
"crypto/lhash/lhash.c",
|
||||
"crypto/x509v3/v3_genn.c",
|
||||
"crypto/x509v3/pcy_cache.c",
|
||||
"crypto/x509v3/v3_sxnet.c",
|
||||
"crypto/x509v3/v3_scts.c",
|
||||
"crypto/x509v3/v3err.c",
|
||||
"crypto/x509v3/v3_conf.c",
|
||||
"crypto/x509v3/v3_utl.c",
|
||||
"crypto/x509v3/v3_akeya.c",
|
||||
"crypto/x509v3/v3_lib.c",
|
||||
"crypto/x509v3/pcy_lib.c",
|
||||
"crypto/x509v3/v3_cpols.c",
|
||||
"crypto/x509v3/v3_ia5.c",
|
||||
"crypto/x509v3/v3_bitst.c",
|
||||
"crypto/x509v3/v3_skey.c",
|
||||
"crypto/x509v3/v3_info.c",
|
||||
"crypto/x509v3/v3_asid.c",
|
||||
"crypto/x509v3/pcy_tree.c",
|
||||
"crypto/x509v3/v3_pcons.c",
|
||||
"crypto/x509v3/v3_bcons.c",
|
||||
"crypto/x509v3/v3_pku.c",
|
||||
"crypto/x509v3/v3_ocsp.c",
|
||||
"crypto/x509v3/pcy_map.c",
|
||||
"crypto/x509v3/v3_ncons.c",
|
||||
"crypto/x509v3/v3_purp.c",
|
||||
"crypto/x509v3/v3_enum.c",
|
||||
"crypto/x509v3/v3_pmaps.c",
|
||||
"crypto/x509v3/pcy_node.c",
|
||||
"crypto/x509v3/v3_pcia.c",
|
||||
"crypto/x509v3/v3_crld.c",
|
||||
"crypto/x509v3/v3_pci.c",
|
||||
"crypto/x509v3/v3_akey.c",
|
||||
"crypto/x509v3/v3_addr.c",
|
||||
"crypto/x509v3/v3_int.c",
|
||||
"crypto/x509v3/v3_alt.c",
|
||||
"crypto/x509v3/v3_extku.c",
|
||||
"crypto/x509v3/v3_prn.c",
|
||||
"crypto/x509v3/pcy_data.c",
|
||||
"crypto/aes/aes_ofb.c",
|
||||
"crypto/aes/aes_ctr.c",
|
||||
"crypto/aes/aes_ecb.c",
|
||||
"crypto/aes/aes_cfb.c",
|
||||
"crypto/aes/aes_wrap.c",
|
||||
"crypto/aes/aes_ige.c",
|
||||
"crypto/aes/aes_misc.c",
|
||||
"crypto/pqueue/pqueue.c",
|
||||
"crypto/sha/sha_one.c",
|
||||
"crypto/sha/sha_dgst.c",
|
||||
"crypto/sha/sha512.c",
|
||||
"crypto/sha/sha1_one.c",
|
||||
"crypto/sha/sha1dgst.c",
|
||||
"crypto/sha/sha256.c",
|
||||
"crypto/whrlpool/wp_dgst.c",
|
||||
"crypto/objects/obj_xref.c",
|
||||
"crypto/objects/o_names.c",
|
||||
"crypto/objects/obj_err.c",
|
||||
"crypto/objects/obj_dat.c",
|
||||
"crypto/objects/obj_lib.c",
|
||||
"crypto/mem.c",
|
||||
"crypto/fips_ers.c",
|
||||
"crypto/o_fips.c",
|
||||
"crypto/engine/eng_rdrand.c",
|
||||
"crypto/engine/eng_err.c",
|
||||
"crypto/engine/tb_ecdsa.c",
|
||||
"crypto/engine/tb_rsa.c",
|
||||
"crypto/engine/tb_cipher.c",
|
||||
"crypto/engine/tb_dsa.c",
|
||||
"crypto/engine/eng_lib.c",
|
||||
"crypto/engine/tb_asnmth.c",
|
||||
"crypto/engine/tb_ecdh.c",
|
||||
"crypto/engine/tb_dh.c",
|
||||
"crypto/engine/tb_store.c",
|
||||
"crypto/engine/eng_init.c",
|
||||
"crypto/engine/eng_cnf.c",
|
||||
"crypto/engine/eng_all.c",
|
||||
"crypto/engine/tb_digest.c",
|
||||
"crypto/engine/tb_pkmeth.c",
|
||||
"crypto/engine/eng_table.c",
|
||||
"crypto/engine/eng_ctrl.c",
|
||||
"crypto/engine/eng_list.c",
|
||||
"crypto/engine/eng_cryptodev.c",
|
||||
"crypto/engine/eng_pkey.c",
|
||||
"crypto/engine/tb_rand.c",
|
||||
"crypto/engine/eng_openssl.c",
|
||||
"crypto/engine/eng_fat.c",
|
||||
"crypto/engine/eng_dyn.c",
|
||||
"crypto/ts/ts_rsp_verify.c",
|
||||
"crypto/ts/ts_req_print.c",
|
||||
"crypto/ts/ts_verify_ctx.c",
|
||||
"crypto/ts/ts_req_utils.c",
|
||||
"crypto/ts/ts_err.c",
|
||||
"crypto/ts/ts_rsp_print.c",
|
||||
"crypto/ts/ts_rsp_utils.c",
|
||||
"crypto/ts/ts_lib.c",
|
||||
"crypto/ts/ts_conf.c",
|
||||
"crypto/ts/ts_asn1.c",
|
||||
"crypto/ts/ts_rsp_sign.c",
|
||||
"crypto/ocsp/ocsp_ext.c",
|
||||
"crypto/ocsp/ocsp_cl.c",
|
||||
"crypto/ocsp/ocsp_ht.c",
|
||||
"crypto/ocsp/ocsp_lib.c",
|
||||
"crypto/ocsp/ocsp_srv.c",
|
||||
"crypto/ocsp/ocsp_vfy.c",
|
||||
"crypto/ocsp/ocsp_err.c",
|
||||
"crypto/ocsp/ocsp_prn.c",
|
||||
"crypto/ocsp/ocsp_asn.c",
|
||||
"crypto/bf/bf_cfb64.c",
|
||||
"crypto/bf/bf_ecb.c",
|
||||
"crypto/bf/bf_enc.c",
|
||||
"crypto/bf/bf_skey.c",
|
||||
"crypto/bf/bf_ofb64.c",
|
||||
"crypto/idea/i_skey.c",
|
||||
"crypto/idea/i_ofb64.c",
|
||||
"crypto/idea/i_cbc.c",
|
||||
"crypto/idea/i_ecb.c",
|
||||
"crypto/idea/i_cfb64.c",
|
||||
"crypto/cmac/cm_ameth.c",
|
||||
"crypto/cmac/cmac.c",
|
||||
"crypto/cmac/cm_pmeth.c",
|
||||
"crypto/dh/dh_lib.c",
|
||||
"crypto/dh/dh_key.c",
|
||||
"crypto/dh/dh_asn1.c",
|
||||
"crypto/dh/dh_depr.c",
|
||||
"crypto/dh/dh_pmeth.c",
|
||||
"crypto/dh/dh_prn.c",
|
||||
"crypto/dh/dh_gen.c",
|
||||
"crypto/dh/dh_ameth.c",
|
||||
"crypto/dh/dh_check.c",
|
||||
"crypto/dh/dh_err.c",
|
||||
"crypto/dh/dh_kdf.c",
|
||||
"crypto/dh/dh_rfc5114.c",
|
||||
"crypto/modes/ccm128.c",
|
||||
"crypto/modes/ofb128.c",
|
||||
"crypto/modes/cts128.c",
|
||||
"crypto/modes/ctr128.c",
|
||||
"crypto/modes/gcm128.c",
|
||||
"crypto/modes/cbc128.c",
|
||||
"crypto/modes/cfb128.c",
|
||||
"crypto/modes/xts128.c",
|
||||
"crypto/modes/wrap128.c",
|
||||
"crypto/camellia/cmll_cfb.c",
|
||||
"crypto/camellia/cmll_ecb.c",
|
||||
"crypto/camellia/cmll_utl.c",
|
||||
"crypto/camellia/cmll_misc.c",
|
||||
"crypto/camellia/cmll_ofb.c",
|
||||
"crypto/camellia/cmll_ctr.c",
|
||||
"crypto/seed/seed_ecb.c",
|
||||
"crypto/seed/seed_cbc.c",
|
||||
"crypto/seed/seed.c",
|
||||
"crypto/seed/seed_ofb.c",
|
||||
"crypto/seed/seed_cfb.c",
|
||||
"crypto/txt_db/txt_db.c",
|
||||
"crypto/cpt_err.c",
|
||||
"crypto/pem/pem_pk8.c",
|
||||
"crypto/pem/pem_lib.c",
|
||||
"crypto/pem/pem_sign.c",
|
||||
"crypto/pem/pem_all.c",
|
||||
"crypto/pem/pem_info.c",
|
||||
"crypto/pem/pem_pkey.c",
|
||||
"crypto/pem/pem_seal.c",
|
||||
"crypto/pem/pem_err.c",
|
||||
"crypto/pem/pem_xaux.c",
|
||||
"crypto/pem/pvkfmt.c",
|
||||
"crypto/pem/pem_x509.c",
|
||||
"crypto/pem/pem_oth.c",
|
||||
"crypto/rand/rand_lib.c",
|
||||
"crypto/rand/randfile.c",
|
||||
"crypto/rand/rand_os2.c",
|
||||
"crypto/rand/rand_unix.c",
|
||||
"crypto/rand/rand_nw.c",
|
||||
"crypto/rand/md_rand.c",
|
||||
"crypto/rand/rand_err.c",
|
||||
"crypto/rand/rand_win.c",
|
||||
"crypto/rand/rand_egd.c",
|
||||
"crypto/cversion.c",
|
||||
"crypto/cast/c_ecb.c",
|
||||
"crypto/cast/c_skey.c",
|
||||
"crypto/cast/c_ofb64.c",
|
||||
"crypto/cast/c_enc.c",
|
||||
"crypto/cast/c_cfb64.c",
|
||||
"crypto/o_time.c",
|
||||
"crypto/mdc2/mdc2dgst.c",
|
||||
"crypto/mdc2/mdc2_one.c",
|
||||
"crypto/rc4/rc4_utl.c",
|
||||
"crypto/ui/ui_compat.c",
|
||||
"crypto/ui/ui_util.c",
|
||||
"crypto/ui/ui_lib.c",
|
||||
"crypto/ui/ui_err.c",
|
||||
"crypto/ui/ui_openssl.c",
|
||||
"crypto/bio/bf_buff.c",
|
||||
"crypto/bio/bss_null.c",
|
||||
"crypto/bio/bss_acpt.c",
|
||||
"crypto/bio/bss_conn.c",
|
||||
"crypto/bio/bss_fd.c",
|
||||
"crypto/bio/bf_null.c",
|
||||
"crypto/bio/bio_err.c",
|
||||
"crypto/bio/bss_sock.c",
|
||||
"crypto/bio/bss_mem.c",
|
||||
"crypto/bio/b_dump.c",
|
||||
"crypto/bio/b_print.c",
|
||||
"crypto/bio/b_sock.c",
|
||||
"crypto/bio/bss_dgram.c",
|
||||
"crypto/bio/bf_nbio.c",
|
||||
"crypto/bio/bio_lib.c",
|
||||
"crypto/bio/bss_file.c",
|
||||
"crypto/bio/bss_bio.c",
|
||||
"crypto/bio/bss_log.c",
|
||||
"crypto/bio/bio_cb.c",
|
||||
"crypto/o_init.c",
|
||||
"crypto/rc2/rc2_skey.c",
|
||||
"crypto/rc2/rc2_cbc.c",
|
||||
"crypto/rc2/rc2cfb64.c",
|
||||
"crypto/rc2/rc2_ecb.c",
|
||||
"crypto/rc2/rc2ofb64.c",
|
||||
"crypto/bn/bn_x931p.c",
|
||||
"crypto/bn/bn_blind.c",
|
||||
"crypto/bn/bn_gf2m.c",
|
||||
"crypto/bn/bn_const.c",
|
||||
"crypto/bn/bn_sqr.c",
|
||||
"crypto/bn/bn_nist.c",
|
||||
"crypto/bn/bn_rand.c",
|
||||
"crypto/bn/bn_err.c",
|
||||
"crypto/bn/bn_div.c",
|
||||
"crypto/bn/bn_kron.c",
|
||||
"crypto/bn/bn_ctx.c",
|
||||
"crypto/bn/bn_shift.c",
|
||||
"crypto/bn/bn_mod.c",
|
||||
"crypto/bn/bn_exp2.c",
|
||||
"crypto/bn/bn_word.c",
|
||||
"crypto/bn/bn_add.c",
|
||||
"crypto/bn/bn_exp.c",
|
||||
"crypto/bn/bn_mont.c",
|
||||
"crypto/bn/bn_print.c",
|
||||
"crypto/bn/bn_mul.c",
|
||||
"crypto/bn/bn_prime.c",
|
||||
"crypto/bn/bn_depr.c",
|
||||
"crypto/bn/bn_gcd.c",
|
||||
"crypto/bn/bn_mpi.c",
|
||||
"crypto/bn/bn_sqrt.c",
|
||||
"crypto/bn/bn_recp.c",
|
||||
"crypto/bn/bn_lib.c",
|
||||
"crypto/ripemd/rmd_dgst.c",
|
||||
"crypto/ripemd/rmd_one.c",
|
||||
"crypto/rsa/rsa_x931.c",
|
||||
"crypto/rsa/rsa_depr.c",
|
||||
"crypto/rsa/rsa_saos.c",
|
||||
"crypto/rsa/rsa_crpt.c",
|
||||
"crypto/rsa/rsa_pss.c",
|
||||
"crypto/rsa/rsa_oaep.c",
|
||||
"crypto/rsa/rsa_null.c",
|
||||
"crypto/rsa/rsa_gen.c",
|
||||
"crypto/rsa/rsa_prn.c",
|
||||
"crypto/rsa/rsa_pmeth.c",
|
||||
"crypto/rsa/rsa_asn1.c",
|
||||
"crypto/rsa/rsa_ssl.c",
|
||||
"crypto/rsa/rsa_ameth.c",
|
||||
"crypto/rsa/rsa_pk1.c",
|
||||
"crypto/rsa/rsa_err.c",
|
||||
"crypto/rsa/rsa_lib.c",
|
||||
"crypto/rsa/rsa_none.c",
|
||||
"crypto/rsa/rsa_chk.c",
|
||||
"crypto/rsa/rsa_eay.c",
|
||||
"crypto/rsa/rsa_sign.c",
|
||||
"crypto/srp/srp_lib.c",
|
||||
"crypto/srp/srp_vfy.c",
|
||||
"crypto/err/err.c",
|
||||
"crypto/err/err_prn.c",
|
||||
"crypto/err/err_all.c",
|
||||
"crypto/mem_clr.c",
|
||||
"crypto/rc4/rc4_skey.c",
|
||||
"crypto/rc4/rc4_enc.c",
|
||||
"crypto/camellia/camellia.c",
|
||||
"crypto/camellia/cmll_cbc.c",
|
||||
#"crypto/aes/aes_x86core.c",
|
||||
"crypto/aes/aes_core.c",
|
||||
"crypto/aes/aes_cbc.c",
|
||||
"crypto/whrlpool/wp_block.c",
|
||||
"crypto/bn/bn_asm.c",
|
||||
]
|
||||
|
||||
# env.drivers_sources+=openssl_sources
|
||||
|
||||
env_drivers.Append(CPPPATH=["#drivers/builtin_openssl2/crypto"])
|
||||
env_drivers.Append(CPPPATH=["#drivers/builtin_openssl2/openssl"])
|
||||
env_drivers.Append(CPPPATH=["#drivers/builtin_openssl2/crypto/evp"])
|
||||
env_drivers.Append(CPPPATH=["#drivers/builtin_openssl2/crypto/asn1"])
|
||||
env_drivers.Append(CPPPATH=["#drivers/builtin_openssl2/crypto/modes"])
|
||||
# env_ssl.Append(CPPPATH=["#drivers/builtin_openssl2/crypto/store"])
|
||||
env_drivers.Append(CPPFLAGS=["-DOPENSSL_NO_ASM", "-DOPENSSL_THREADS", "-DL_ENDIAN"])
|
||||
|
||||
# Workaround for compilation error with GCC/Clang when -Werror is too greedy (GH-4517)
|
||||
import os
|
||||
if not (os.name == "nt" and os.getenv("VSINSTALLDIR") != None): # not Windows and not MSVC
|
||||
env_drivers.Append(CFLAGS=["-Wno-error=implicit-function-declaration"])
|
||||
|
||||
env_drivers.add_source_files(env.drivers_sources, openssl_sources)
|
|
@ -10193,6 +10193,11 @@ void RasterizerGLES2::init() {
|
|||
shadow = NULL;
|
||||
shadow_pass = 0;
|
||||
|
||||
#ifdef ANGLE_ENABLED
|
||||
// Fix for ANGLE
|
||||
material_shader.set_conditional(MaterialShaderGLES2::DISABLE_FRONT_FACING, true);
|
||||
#endif
|
||||
|
||||
framebuffer.fbo = 0;
|
||||
framebuffer.width = 0;
|
||||
framebuffer.height = 0;
|
||||
|
@ -10271,9 +10276,12 @@ void RasterizerGLES2::init() {
|
|||
s3tc_supported = extensions.has("GL_EXT_texture_compression_dxt1") || extensions.has("GL_EXT_texture_compression_s3tc") || extensions.has("WEBGL_compressed_texture_s3tc");
|
||||
use_half_float = extensions.has("GL_OES_vertex_half_float");
|
||||
atitc_supported = extensions.has("GL_AMD_compressed_ATC_texture");
|
||||
|
||||
srgb_supported = extensions.has("GL_EXT_sRGB");
|
||||
#ifndef ANGLE_ENABLED
|
||||
s3tc_srgb_supported = s3tc_supported && extensions.has("GL_EXT_texture_compression_s3tc");
|
||||
#else
|
||||
s3tc_srgb_supported = s3tc_supported;
|
||||
#endif
|
||||
latc_supported = extensions.has("GL_EXT_texture_compression_latc");
|
||||
anisotropic_level = 1.0;
|
||||
use_anisotropic_filter = extensions.has("GL_EXT_texture_filter_anisotropic");
|
||||
|
|
|
@ -811,7 +811,11 @@ void main() {
|
|||
float specular_exp=1.0;
|
||||
float glow=0.0;
|
||||
float shade_param=0.0;
|
||||
#ifdef DISABLE_FRONT_FACING
|
||||
float side=float(1)*2.0-1.0;
|
||||
#else
|
||||
float side=float(gl_FrontFacing)*2.0-1.0;
|
||||
#endif
|
||||
#if defined(ENABLE_TANGENT_INTERP)
|
||||
vec3 binormal = normalize(binormal_interp)*side;
|
||||
vec3 tangent = normalize(tangent_interp)*side;
|
||||
|
|
|
@ -127,9 +127,16 @@ void IP_Unix::get_local_addresses(List<IP_Address> *r_addresses) const {
|
|||
|
||||
using namespace Windows::Networking;
|
||||
using namespace Windows::Networking::Connectivity;
|
||||
|
||||
auto hostnames = NetworkInformation::GetHostNames();
|
||||
|
||||
for (int i = 0; i < hostnames->Size; i++) {
|
||||
|
||||
if (hostnames->GetAt(i)->Type == HostNameType::Ipv4 && hostnames->GetAt(i)->IPInformation != nullptr) {
|
||||
|
||||
r_addresses->push_back(IP_Address(String(hostnames->GetAt(i)->CanonicalName->Data())));
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < hostnames->Size; i++) {
|
||||
|
||||
if (hostnames->GetAt(i)->Type == HostNameType::Ipv4 || hostnames->GetAt(i)->Type == HostNameType::Ipv6 && hostnames->GetAt(i)->IPInformation != nullptr) {
|
||||
|
@ -148,10 +155,7 @@ void IP_Unix::get_local_addresses(List<IP_Address> *r_addresses) const {
|
|||
while (true) {
|
||||
|
||||
addrs = (IP_ADAPTER_ADDRESSES *)memalloc(buf_size);
|
||||
int err = GetAdaptersAddresses(AF_UNSPEC, GAA_FLAG_SKIP_ANYCAST |
|
||||
GAA_FLAG_SKIP_MULTICAST |
|
||||
GAA_FLAG_SKIP_DNS_SERVER |
|
||||
GAA_FLAG_SKIP_FRIENDLY_NAME,
|
||||
int err = GetAdaptersAddresses(AF_UNSPEC, GAA_FLAG_SKIP_ANYCAST | GAA_FLAG_SKIP_MULTICAST | GAA_FLAG_SKIP_DNS_SERVER | GAA_FLAG_SKIP_FRIENDLY_NAME,
|
||||
NULL, addrs, &buf_size);
|
||||
if (err == NO_ERROR) {
|
||||
break;
|
||||
|
|
|
@ -38,12 +38,6 @@
|
|||
#include <wchar.h>
|
||||
#include <windows.h>
|
||||
|
||||
#ifdef WINRT_ENABLED
|
||||
#include <Synchapi.h>
|
||||
#include <collection.h>
|
||||
#include <ppltasks.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
||||
[03:57] <reduz> yessopie, so i dont havemak to rely on unicows
|
||||
|
@ -130,14 +124,6 @@ Error DirAccessWindows::change_dir(String p_dir) {
|
|||
|
||||
GLOBAL_LOCK_FUNCTION
|
||||
|
||||
#ifdef WINRT_ENABLED
|
||||
|
||||
p_dir = fix_path(p_dir);
|
||||
current_dir = normalize_path(p_dir);
|
||||
|
||||
return OK;
|
||||
#else
|
||||
|
||||
p_dir = fix_path(p_dir);
|
||||
|
||||
wchar_t real_current_dir_name[2048];
|
||||
|
@ -170,19 +156,12 @@ Error DirAccessWindows::change_dir(String p_dir) {
|
|||
//}
|
||||
|
||||
return worked ? OK : ERR_INVALID_PARAMETER;
|
||||
#endif
|
||||
}
|
||||
|
||||
Error DirAccessWindows::make_dir(String p_dir) {
|
||||
|
||||
GLOBAL_LOCK_FUNCTION
|
||||
|
||||
#ifdef WINRT_ENABLED
|
||||
|
||||
return ERR_CANT_CREATE;
|
||||
|
||||
#else
|
||||
|
||||
if (p_dir.is_rel_path())
|
||||
p_dir = get_current_dir().plus_file(p_dir);
|
||||
|
||||
|
@ -207,8 +186,6 @@ Error DirAccessWindows::make_dir(String p_dir) {
|
|||
};
|
||||
|
||||
return ERR_CANT_CREATE;
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
String DirAccessWindows::get_current_dir() {
|
||||
|
|
|
@ -115,7 +115,16 @@ void FileAccessWindows::close() {
|
|||
//int rename_error = _wrename((save_path+".tmp").c_str(),save_path.c_str());
|
||||
|
||||
bool rename_error;
|
||||
|
||||
#ifdef WINRT_ENABLED
|
||||
// WinRT has no PathFileExists, so we check attributes instead
|
||||
DWORD fileAttr;
|
||||
|
||||
fileAttr = GetFileAttributesW(save_path.c_str());
|
||||
if (INVALID_FILE_ATTRIBUTES == fileAttr) {
|
||||
#else
|
||||
if (!PathFileExistsW(save_path.c_str())) {
|
||||
#endif
|
||||
//creating new file
|
||||
rename_error = _wrename((save_path + ".tmp").c_str(), save_path.c_str()) != 0;
|
||||
} else {
|
||||
|
@ -130,6 +139,7 @@ void FileAccessWindows::close() {
|
|||
ERR_FAIL_COND(rename_error);
|
||||
}
|
||||
}
|
||||
|
||||
bool FileAccessWindows::is_open() const {
|
||||
|
||||
return (f != NULL);
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
/*************************************************************************/
|
||||
#include "semaphore_windows.h"
|
||||
|
||||
#if defined(WINDOWS_ENABLED) && !defined(WINRT_ENABLED)
|
||||
#if defined(WINDOWS_ENABLED)
|
||||
|
||||
#include "os/memory.h"
|
||||
|
||||
|
|
|
@ -741,6 +741,10 @@ static const char *s_ControllerMappings[] = {
|
|||
"303534632d303563342d576972656c65,PS4 Controller USB/Win,leftx:a0,lefty:a1,dpdown:b15,rightstick:b11,rightshoulder:b5,rightx:a2,start:b9,righty:a5,lefttrigger:a3,x:b0,dpup:b14,dpleft:b16,dpright:b17,back:b8,leftstick:b10,leftshoulder:b4,y:b3,a:b1,righttrigger:b7,b:b2,",
|
||||
"c2a94d6963726f736f66742058626f78,Wireless X360 Controller,leftx:a0,lefty:a1,dpdown:b14,rightstick:b10,rightshoulder:b5,rightx:a3,start:b7,righty:a4,dpleft:b11,lefttrigger:a2,x:b2,dpup:b13,back:b6,leftstick:b9,leftshoulder:b4,y:b3,a:b0,dpright:b12,righttrigger:a5,b:b1,",
|
||||
#endif
|
||||
|
||||
#ifdef WINRT_ENABLED
|
||||
"__WINRT_GAMEPAD__,Xbox Controller,a:b2,b:b3,x:b4,y:b5,start:b0,back:b1,leftstick:b12,rightstick:b13,leftshoulder:b10,rightshoulder:b11,dpup:b6,dpdown:b7,dpleft:b8,dpright:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,",
|
||||
#endif
|
||||
NULL
|
||||
};
|
||||
|
||||
|
|
398
methods.py
|
@ -200,7 +200,7 @@ def build_glsl_header(filename):
|
|||
out_file_base = out_file
|
||||
out_file_base = out_file_base[out_file_base.rfind("/") + 1:]
|
||||
out_file_base = out_file_base[out_file_base.rfind("\\") + 1:]
|
||||
# print("out file "+out_file+" base " +out_file_base)
|
||||
# print("out file "+out_file+" base " +out_file_base)
|
||||
out_file_ifdef = out_file_base.replace(".", "_").upper()
|
||||
fd.write("#ifndef " + out_file_ifdef + "\n")
|
||||
fd.write("#define " + out_file_ifdef + "\n")
|
||||
|
@ -249,79 +249,79 @@ def build_glsl_header(filename):
|
|||
|
||||
fd.write("""\t_FORCE_INLINE_ void set_uniform(Uniforms p_uniform, const Transform& p_transform) { _FU
|
||||
|
||||
const Transform &tr = p_transform;
|
||||
const Transform &tr = p_transform;
|
||||
|
||||
GLfloat matrix[16]={ /* build a 16x16 matrix */
|
||||
tr.basis.elements[0][0],
|
||||
tr.basis.elements[1][0],
|
||||
tr.basis.elements[2][0],
|
||||
0,
|
||||
tr.basis.elements[0][1],
|
||||
tr.basis.elements[1][1],
|
||||
tr.basis.elements[2][1],
|
||||
0,
|
||||
tr.basis.elements[0][2],
|
||||
tr.basis.elements[1][2],
|
||||
tr.basis.elements[2][2],
|
||||
0,
|
||||
tr.origin.x,
|
||||
tr.origin.y,
|
||||
tr.origin.z,
|
||||
1
|
||||
};
|
||||
GLfloat matrix[16]={ /* build a 16x16 matrix */
|
||||
tr.basis.elements[0][0],
|
||||
tr.basis.elements[1][0],
|
||||
tr.basis.elements[2][0],
|
||||
0,
|
||||
tr.basis.elements[0][1],
|
||||
tr.basis.elements[1][1],
|
||||
tr.basis.elements[2][1],
|
||||
0,
|
||||
tr.basis.elements[0][2],
|
||||
tr.basis.elements[1][2],
|
||||
tr.basis.elements[2][2],
|
||||
0,
|
||||
tr.origin.x,
|
||||
tr.origin.y,
|
||||
tr.origin.z,
|
||||
1
|
||||
};
|
||||
|
||||
|
||||
glUniformMatrix4fv(get_uniform(p_uniform),1,false,matrix);
|
||||
glUniformMatrix4fv(get_uniform(p_uniform),1,false,matrix);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
""")
|
||||
""")
|
||||
|
||||
fd.write("""\t_FORCE_INLINE_ void set_uniform(Uniforms p_uniform, const Matrix32& p_transform) { _FU
|
||||
|
||||
const Matrix32 &tr = p_transform;
|
||||
const Matrix32 &tr = p_transform;
|
||||
|
||||
GLfloat matrix[16]={ /* build a 16x16 matrix */
|
||||
tr.elements[0][0],
|
||||
tr.elements[0][1],
|
||||
0,
|
||||
0,
|
||||
tr.elements[1][0],
|
||||
tr.elements[1][1],
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
tr.elements[2][0],
|
||||
tr.elements[2][1],
|
||||
0,
|
||||
1
|
||||
};
|
||||
GLfloat matrix[16]={ /* build a 16x16 matrix */
|
||||
tr.elements[0][0],
|
||||
tr.elements[0][1],
|
||||
0,
|
||||
0,
|
||||
tr.elements[1][0],
|
||||
tr.elements[1][1],
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
tr.elements[2][0],
|
||||
tr.elements[2][1],
|
||||
0,
|
||||
1
|
||||
};
|
||||
|
||||
|
||||
glUniformMatrix4fv(get_uniform(p_uniform),1,false,matrix);
|
||||
glUniformMatrix4fv(get_uniform(p_uniform),1,false,matrix);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
""")
|
||||
""")
|
||||
|
||||
fd.write("""\t_FORCE_INLINE_ void set_uniform(Uniforms p_uniform, const CameraMatrix& p_matrix) { _FU
|
||||
|
||||
GLfloat matrix[16];
|
||||
GLfloat matrix[16];
|
||||
|
||||
for (int i=0;i<4;i++) {
|
||||
for (int j=0;j<4;j++) {
|
||||
for (int i=0;i<4;i++) {
|
||||
for (int j=0;j<4;j++) {
|
||||
|
||||
matrix[i*4+j]=p_matrix.matrix[i][j];
|
||||
}
|
||||
}
|
||||
matrix[i*4+j]=p_matrix.matrix[i][j];
|
||||
}
|
||||
}
|
||||
|
||||
glUniformMatrix4fv(get_uniform(p_uniform),1,false,matrix);
|
||||
}; """)
|
||||
glUniformMatrix4fv(get_uniform(p_uniform),1,false,matrix);
|
||||
}; """)
|
||||
|
||||
fd.write("\n\n#undef _FU\n\n\n")
|
||||
|
||||
|
@ -493,7 +493,7 @@ def build_hlsl_dx9_header(filename):
|
|||
out_file_base = out_file
|
||||
out_file_base = out_file_base[out_file_base.rfind("/") + 1:]
|
||||
out_file_base = out_file_base[out_file_base.rfind("\\") + 1:]
|
||||
# print("out file "+out_file+" base " +out_file_base)
|
||||
# print("out file "+out_file+" base " +out_file_base)
|
||||
out_file_ifdef = out_file_base.replace(".", "_").upper()
|
||||
fd.write("#ifndef " + out_file_ifdef + "\n")
|
||||
fd.write("#define " + out_file_ifdef + "\n")
|
||||
|
@ -542,46 +542,46 @@ def build_hlsl_dx9_header(filename):
|
|||
|
||||
fd.write("""\t_FORCE_INLINE_ void set_uniform(Uniforms p_uniform, const Transform& p_transform) { _FU
|
||||
|
||||
const Transform &tr = p_transform;
|
||||
const Transform &tr = p_transform;
|
||||
|
||||
float matrix[16]={ /* build a 16x16 matrix */
|
||||
tr.basis.elements[0][0],
|
||||
tr.basis.elements[0][1],
|
||||
tr.basis.elements[0][2],
|
||||
tr.origin.x,
|
||||
tr.basis.elements[1][0],
|
||||
tr.basis.elements[1][1],
|
||||
tr.basis.elements[1][2],
|
||||
tr.origin.y,
|
||||
tr.basis.elements[2][0],
|
||||
tr.basis.elements[2][1],
|
||||
tr.basis.elements[2][2],
|
||||
tr.origin.z,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1
|
||||
};
|
||||
float matrix[16]={ /* build a 16x16 matrix */
|
||||
tr.basis.elements[0][0],
|
||||
tr.basis.elements[0][1],
|
||||
tr.basis.elements[0][2],
|
||||
tr.origin.x,
|
||||
tr.basis.elements[1][0],
|
||||
tr.basis.elements[1][1],
|
||||
tr.basis.elements[1][2],
|
||||
tr.origin.y,
|
||||
tr.basis.elements[2][0],
|
||||
tr.basis.elements[2][1],
|
||||
tr.basis.elements[2][2],
|
||||
tr.origin.z,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1
|
||||
};
|
||||
|
||||
set_uniformfv(p_uniform,&matrix[0],4);
|
||||
set_uniformfv(p_uniform,&matrix[0],4);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
""")
|
||||
""")
|
||||
|
||||
fd.write("""\t_FORCE_INLINE_ void set_uniform(Uniforms p_uniform, const CameraMatrix& p_matrix) { _FU
|
||||
|
||||
float matrix[16];
|
||||
float matrix[16];
|
||||
|
||||
for (int i=0;i<4;i++) {
|
||||
for (int j=0;j<4;j++) {
|
||||
for (int i=0;i<4;i++) {
|
||||
for (int j=0;j<4;j++) {
|
||||
|
||||
matrix[i*4+j]=p_matrix.matrix[j][i];
|
||||
}
|
||||
}
|
||||
matrix[i*4+j]=p_matrix.matrix[j][i];
|
||||
}
|
||||
}
|
||||
|
||||
set_uniformfv(p_uniform,&matrix[0],4);
|
||||
}; """)
|
||||
set_uniformfv(p_uniform,&matrix[0],4);
|
||||
}; """)
|
||||
|
||||
fd.write("\n\n#undef _FU\n\n\n")
|
||||
|
||||
|
@ -720,7 +720,7 @@ def include_file_in_legacygl_header(filename, header_data, depth):
|
|||
enumbase = ifdefline[:ifdefline.find("_EN_")]
|
||||
ifdefline = ifdefline.replace("_EN_", "_")
|
||||
line = line.replace("_EN_", "_")
|
||||
# print(enumbase+":"+ifdefline);
|
||||
# print(enumbase+":"+ifdefline);
|
||||
if (enumbase not in header_data.enums):
|
||||
header_data.enums[enumbase] = []
|
||||
if (ifdefline not in header_data.enums[enumbase]):
|
||||
|
@ -816,7 +816,7 @@ def build_legacygl_header(filename, include, class_suffix, output_attribs):
|
|||
out_file_base = out_file
|
||||
out_file_base = out_file_base[out_file_base.rfind("/") + 1:]
|
||||
out_file_base = out_file_base[out_file_base.rfind("\\") + 1:]
|
||||
# print("out file "+out_file+" base " +out_file_base)
|
||||
# print("out file "+out_file+" base " +out_file_base)
|
||||
out_file_ifdef = out_file_base.replace(".", "_").upper()
|
||||
fd.write("#ifndef " + out_file_ifdef + class_suffix + "_120\n")
|
||||
fd.write("#define " + out_file_ifdef + class_suffix + "_120\n")
|
||||
|
@ -867,79 +867,79 @@ def build_legacygl_header(filename, include, class_suffix, output_attribs):
|
|||
|
||||
fd.write("""\t_FORCE_INLINE_ void set_uniform(Uniforms p_uniform, const Transform& p_transform) { _FU
|
||||
|
||||
const Transform &tr = p_transform;
|
||||
const Transform &tr = p_transform;
|
||||
|
||||
GLfloat matrix[16]={ /* build a 16x16 matrix */
|
||||
tr.basis.elements[0][0],
|
||||
tr.basis.elements[1][0],
|
||||
tr.basis.elements[2][0],
|
||||
0,
|
||||
tr.basis.elements[0][1],
|
||||
tr.basis.elements[1][1],
|
||||
tr.basis.elements[2][1],
|
||||
0,
|
||||
tr.basis.elements[0][2],
|
||||
tr.basis.elements[1][2],
|
||||
tr.basis.elements[2][2],
|
||||
0,
|
||||
tr.origin.x,
|
||||
tr.origin.y,
|
||||
tr.origin.z,
|
||||
1
|
||||
};
|
||||
GLfloat matrix[16]={ /* build a 16x16 matrix */
|
||||
tr.basis.elements[0][0],
|
||||
tr.basis.elements[1][0],
|
||||
tr.basis.elements[2][0],
|
||||
0,
|
||||
tr.basis.elements[0][1],
|
||||
tr.basis.elements[1][1],
|
||||
tr.basis.elements[2][1],
|
||||
0,
|
||||
tr.basis.elements[0][2],
|
||||
tr.basis.elements[1][2],
|
||||
tr.basis.elements[2][2],
|
||||
0,
|
||||
tr.origin.x,
|
||||
tr.origin.y,
|
||||
tr.origin.z,
|
||||
1
|
||||
};
|
||||
|
||||
|
||||
glUniformMatrix4fv(get_uniform(p_uniform),1,false,matrix);
|
||||
glUniformMatrix4fv(get_uniform(p_uniform),1,false,matrix);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
""")
|
||||
""")
|
||||
|
||||
fd.write("""\t_FORCE_INLINE_ void set_uniform(Uniforms p_uniform, const Matrix32& p_transform) { _FU
|
||||
|
||||
const Matrix32 &tr = p_transform;
|
||||
const Matrix32 &tr = p_transform;
|
||||
|
||||
GLfloat matrix[16]={ /* build a 16x16 matrix */
|
||||
tr.elements[0][0],
|
||||
tr.elements[0][1],
|
||||
0,
|
||||
0,
|
||||
tr.elements[1][0],
|
||||
tr.elements[1][1],
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
tr.elements[2][0],
|
||||
tr.elements[2][1],
|
||||
0,
|
||||
1
|
||||
};
|
||||
GLfloat matrix[16]={ /* build a 16x16 matrix */
|
||||
tr.elements[0][0],
|
||||
tr.elements[0][1],
|
||||
0,
|
||||
0,
|
||||
tr.elements[1][0],
|
||||
tr.elements[1][1],
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
tr.elements[2][0],
|
||||
tr.elements[2][1],
|
||||
0,
|
||||
1
|
||||
};
|
||||
|
||||
|
||||
glUniformMatrix4fv(get_uniform(p_uniform),1,false,matrix);
|
||||
glUniformMatrix4fv(get_uniform(p_uniform),1,false,matrix);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
""")
|
||||
""")
|
||||
|
||||
fd.write("""\t_FORCE_INLINE_ void set_uniform(Uniforms p_uniform, const CameraMatrix& p_matrix) { _FU
|
||||
|
||||
GLfloat matrix[16];
|
||||
GLfloat matrix[16];
|
||||
|
||||
for (int i=0;i<4;i++) {
|
||||
for (int j=0;j<4;j++) {
|
||||
for (int i=0;i<4;i++) {
|
||||
for (int j=0;j<4;j++) {
|
||||
|
||||
matrix[i*4+j]=p_matrix.matrix[i][j];
|
||||
}
|
||||
}
|
||||
matrix[i*4+j]=p_matrix.matrix[i][j];
|
||||
}
|
||||
}
|
||||
|
||||
glUniformMatrix4fv(get_uniform(p_uniform),1,false,matrix);
|
||||
}; """)
|
||||
glUniformMatrix4fv(get_uniform(p_uniform),1,false,matrix);
|
||||
}; """)
|
||||
|
||||
fd.write("\n\n#undef _FU\n\n\n")
|
||||
|
||||
|
@ -959,10 +959,10 @@ def build_legacygl_header(filename, include, class_suffix, output_attribs):
|
|||
x = header_data.enums[xv]
|
||||
bits = 1
|
||||
amt = len(x)
|
||||
# print(x)
|
||||
# print(x)
|
||||
while(2**bits < amt):
|
||||
bits += 1
|
||||
# print("amount: "+str(amt)+" bits "+str(bits));
|
||||
# print("amount: "+str(amt)+" bits "+str(bits));
|
||||
strs = "{"
|
||||
for i in range(amt):
|
||||
strs += "\"#define " + x[i] + "\\n\","
|
||||
|
@ -1252,31 +1252,31 @@ def win32_spawn(sh, escape, cmd, args, env):
|
|||
|
||||
"""
|
||||
def win32_spawn(sh, escape, cmd, args, spawnenv):
|
||||
import win32file
|
||||
import win32event
|
||||
import win32process
|
||||
import win32security
|
||||
for var in spawnenv:
|
||||
spawnenv[var] = spawnenv[var].encode('ascii', 'replace')
|
||||
import win32file
|
||||
import win32event
|
||||
import win32process
|
||||
import win32security
|
||||
for var in spawnenv:
|
||||
spawnenv[var] = spawnenv[var].encode('ascii', 'replace')
|
||||
|
||||
sAttrs = win32security.SECURITY_ATTRIBUTES()
|
||||
StartupInfo = win32process.STARTUPINFO()
|
||||
newargs = ' '.join(map(escape, args[1:]))
|
||||
cmdline = cmd + " " + newargs
|
||||
sAttrs = win32security.SECURITY_ATTRIBUTES()
|
||||
StartupInfo = win32process.STARTUPINFO()
|
||||
newargs = ' '.join(map(escape, args[1:]))
|
||||
cmdline = cmd + " " + newargs
|
||||
|
||||
# check for any special operating system commands
|
||||
if cmd == 'del':
|
||||
for arg in args[1:]:
|
||||
win32file.DeleteFile(arg)
|
||||
exit_code = 0
|
||||
else:
|
||||
# otherwise execute the command.
|
||||
hProcess, hThread, dwPid, dwTid = win32process.CreateProcess(None, cmdline, None, None, 1, 0, spawnenv, None, StartupInfo)
|
||||
win32event.WaitForSingleObject(hProcess, win32event.INFINITE)
|
||||
exit_code = win32process.GetExitCodeProcess(hProcess)
|
||||
win32file.CloseHandle(hProcess);
|
||||
win32file.CloseHandle(hThread);
|
||||
return exit_code
|
||||
# check for any special operating system commands
|
||||
if cmd == 'del':
|
||||
for arg in args[1:]:
|
||||
win32file.DeleteFile(arg)
|
||||
exit_code = 0
|
||||
else:
|
||||
# otherwise execute the command.
|
||||
hProcess, hThread, dwPid, dwTid = win32process.CreateProcess(None, cmdline, None, None, 1, 0, spawnenv, None, StartupInfo)
|
||||
win32event.WaitForSingleObject(hProcess, win32event.INFINITE)
|
||||
exit_code = win32process.GetExitCodeProcess(hProcess)
|
||||
win32file.CloseHandle(hProcess);
|
||||
win32file.CloseHandle(hThread);
|
||||
return exit_code
|
||||
"""
|
||||
|
||||
def android_add_maven_repository(self, url):
|
||||
|
@ -1440,7 +1440,7 @@ def save_active_platforms(apnames, ap):
|
|||
|
||||
for x in ap:
|
||||
pth = x + "/logo.png"
|
||||
# print("open path: "+pth)
|
||||
# print("open path: "+pth)
|
||||
pngf = open(pth, "rb")
|
||||
b = pngf.read(1)
|
||||
str = " /* AUTOGENERATED FILE, DO NOT EDIT */ \n"
|
||||
|
@ -1492,3 +1492,73 @@ def no_verbose(sys, env):
|
|||
env.Append(LINKCOMSTR=[link_program_message])
|
||||
env.Append(JARCOMSTR=[java_library_message])
|
||||
env.Append(JAVACCOMSTR=[java_compile_source_message])
|
||||
|
||||
def detect_visual_c_compiler_version(tools_env):
|
||||
# tools_env is the variable scons uses to call tools that execute tasks, SCons's env['ENV'] that executes tasks...
|
||||
# (see the SCons documentation for more information on what it does)...
|
||||
# in order for this function to be well encapsulated i choose to force it to recieve SCons's TOOLS env (env['ENV']
|
||||
# and not scons setup environment (env)... so make sure you call the right environment on it or it will fail to detect
|
||||
# the propper vc version that will be called
|
||||
|
||||
# These is no flag to give to visual c compilers to set the architecture, ie scons bits argument (32,64,ARM etc)
|
||||
# There are many different cl.exe files that are run, and each one compiles & links to a different architecture
|
||||
# As far as I know, the only way to figure out what compiler will be run when Scons calls cl.exe via Program()
|
||||
# is to check the PATH varaible and figure out which one will be called first. Code bellow does that and returns:
|
||||
# the following string values:
|
||||
|
||||
# "" Compiler not detected
|
||||
# "amd64" Native 64 bit compiler
|
||||
# "amd64_x86" 64 bit Cross Compiler for 32 bit
|
||||
# "x86" Native 32 bit compiler
|
||||
# "x86_amd64" 32 bit Cross Compiler for 64 bit
|
||||
|
||||
# There are other architectures, but Godot does not support them currently, so this function does not detect arm/amd64_arm
|
||||
# and similar architectures/compilers
|
||||
|
||||
# Set chosen compiler to "not detected"
|
||||
vc_chosen_compiler_index = -1
|
||||
vc_chosen_compiler_str = ""
|
||||
|
||||
# find() works with -1 so big ifs bellow are needed... the simplest solution, in fact
|
||||
# First test if amd64 and amd64_x86 compilers are present in the path
|
||||
vc_amd64_compiler_detection_index = tools_env["PATH"].find(tools_env["VCINSTALLDIR"]+"BIN\\amd64;")
|
||||
if(vc_amd64_compiler_detection_index > -1):
|
||||
vc_chosen_compiler_index = vc_amd64_compiler_detection_index
|
||||
vc_chosen_compiler_str = "amd64"
|
||||
|
||||
vc_amd64_x86_compiler_detection_index = tools_env["PATH"].find(tools_env["VCINSTALLDIR"]+"BIN\\amd64_x86;")
|
||||
if(vc_amd64_x86_compiler_detection_index > -1
|
||||
and (vc_chosen_compiler_index == -1
|
||||
or vc_chosen_compiler_index > vc_amd64_x86_compiler_detection_index)):
|
||||
vc_chosen_compiler_index = vc_amd64_x86_compiler_detection_index
|
||||
vc_chosen_compiler_str = "amd64_x86"
|
||||
|
||||
|
||||
# Now check the 32 bit compilers
|
||||
vc_x86_compiler_detection_index = tools_env["PATH"].find(tools_env["VCINSTALLDIR"]+"BIN;")
|
||||
if(vc_x86_compiler_detection_index > -1
|
||||
and (vc_chosen_compiler_index == -1
|
||||
or vc_chosen_compiler_index > vc_x86_compiler_detection_index)):
|
||||
vc_chosen_compiler_index = vc_x86_compiler_detection_index
|
||||
vc_chosen_compiler_str = "x86"
|
||||
|
||||
vc_x86_amd64_compiler_detection_index = tools_env["PATH"].find(tools_env['VCINSTALLDIR']+"BIN\\x86_amd64;")
|
||||
if(vc_x86_amd64_compiler_detection_index > -1
|
||||
and (vc_chosen_compiler_index == -1
|
||||
or vc_chosen_compiler_index > vc_x86_amd64_compiler_detection_index)):
|
||||
vc_chosen_compiler_index = vc_x86_amd64_compiler_detection_index
|
||||
vc_chosen_compiler_str = "x86_amd64"
|
||||
|
||||
# debug help
|
||||
#print vc_amd64_compiler_detection_index
|
||||
#print vc_amd64_x86_compiler_detection_index
|
||||
#print vc_x86_compiler_detection_index
|
||||
#print vc_x86_amd64_compiler_detection_index
|
||||
#print "chosen "+str(vc_chosen_compiler_index)+ " | "+str(vc_chosen_compiler_str)
|
||||
|
||||
return vc_chosen_compiler_str
|
||||
|
||||
def precious_program(env, program, sources, **args):
|
||||
program = env.ProgramOriginal(program, sources, **args)
|
||||
env.Precious(program)
|
||||
return program
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="uap mp build" xmlns:build="http://schemas.microsoft.com/developer/appx/2015/build">
|
||||
<Identity Name="$identity_name$" Publisher="$publisher$" Version="$version_string$" ProcessorArchitecture="$architecture$" />
|
||||
<mp:PhoneIdentity PhoneProductId="$product_guid$" PhonePublisherId="$publisher_guid$" />
|
||||
<Properties>
|
||||
<DisplayName>$display_name$</DisplayName>
|
||||
<PublisherDisplayName>$publisher_display_name$</PublisherDisplayName>
|
||||
<Logo>Assets\StoreLogo.png</Logo>
|
||||
</Properties>
|
||||
<Dependencies>
|
||||
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.10240.0" MaxVersionTested="10.0.14393.0" />
|
||||
<PackageDependency Name="Microsoft.VCLibs.140.00" MinVersion="14.0.24123.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
|
||||
</Dependencies>
|
||||
<Resources>
|
||||
<Resource Language="EN-US" />
|
||||
</Resources>
|
||||
<Applications>
|
||||
<Application Id="App" Executable="godot.winrt.exe" EntryPoint="GodotWinRT.App">
|
||||
<uap:VisualElements DisplayName="$display_name$" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="$app_description$" BackgroundColor="$bg_color$">
|
||||
<uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png" Square310x310Logo="Assets\Square310x310Logo.png" Square71x71Logo="Assets\Square71x71Logo.png" ShortName="$short_name$">
|
||||
$name_on_tiles$
|
||||
</uap:DefaultTile>
|
||||
<uap:SplashScreen Image="Assets\SplashScreen.png" />
|
||||
$rotation_preference$
|
||||
</uap:VisualElements>
|
||||
</Application>
|
||||
</Applications>
|
||||
$capabilities_place$
|
||||
<build:Metadata>
|
||||
<build:Item Name="GodotEngine" Version="$godot_version$" />
|
||||
</build:Metadata>
|
||||
</Package>
|
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 7.2 KiB |
|
@ -0,0 +1,32 @@
|
|||
/*************************************************************************/
|
||||
/* winrtdef.h */
|
||||
/*************************************************************************/
|
||||
/* This file is part of: */
|
||||
/* GODOT ENGINE */
|
||||
/* http://www.godotengine.org */
|
||||
/*************************************************************************/
|
||||
/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
/* "Software"), to deal in the Software without restriction, including */
|
||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||
/* the following conditions: */
|
||||
/* */
|
||||
/* The above copyright notice and this permission notice shall be */
|
||||
/* included in all copies or substantial portions of the Software. */
|
||||
/* */
|
||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
|
||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/*************************************************************************/
|
||||
|
||||
// "generic" is a reserved keyword in C++/CX code
|
||||
// this avoids the errors in the variable name from Freetype code
|
||||
#define generic freetype_generic
|
|
@ -648,6 +648,9 @@ if (env['builtin_openssl'] != 'no'):
|
|||
"crypto/bn/bn_asm.c",
|
||||
]
|
||||
|
||||
if "platform" in env and env["platform"] == "winrt":
|
||||
thirdparty_sources += ['winrt.cpp']
|
||||
|
||||
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
|
||||
|
||||
env_openssl.add_source_files(env.modules_sources, thirdparty_sources)
|
||||
|
|
|
@ -1,95 +1,96 @@
|
|||
#
|
||||
# tested on | Windows native | Linux cross-compilation
|
||||
# ------------------------+-------------------+---------------------------
|
||||
# MSVS C++ 2010 Express | WORKS | n/a
|
||||
# Mingw-w64 | WORKS | WORKS
|
||||
# Mingw-w32 | WORKS | WORKS
|
||||
# MinGW | WORKS | untested
|
||||
# tested on | Windows native | Linux cross-compilation
|
||||
# ------------------------+-------------------+---------------------------
|
||||
# MSVS C++ 2010 Express | WORKS | n/a
|
||||
# Mingw-w64 | WORKS | WORKS
|
||||
# Mingw-w32 | WORKS | WORKS
|
||||
# MinGW | WORKS | untested
|
||||
#
|
||||
#####
|
||||
# Notes about MSVS C++ :
|
||||
#
|
||||
# - MSVC2010-Express compiles to 32bits only.
|
||||
# - MSVC2010-Express compiles to 32bits only.
|
||||
#
|
||||
#####
|
||||
# Notes about Mingw-w64 and Mingw-w32 under Windows :
|
||||
#
|
||||
# - both can be installed using the official installer :
|
||||
# http://mingw-w64.sourceforge.net/download.php#mingw-builds
|
||||
# - both can be installed using the official installer :
|
||||
# http://mingw-w64.sourceforge.net/download.php#mingw-builds
|
||||
#
|
||||
# - if you want to compile both 32bits and 64bits, don't forget to
|
||||
# run the installer twice to install them both.
|
||||
# - if you want to compile both 32bits and 64bits, don't forget to
|
||||
# run the installer twice to install them both.
|
||||
#
|
||||
# - install them into a path that does not contain spaces
|
||||
# ( example : "C:/Mingw-w32", "C:/Mingw-w64" )
|
||||
# - install them into a path that does not contain spaces
|
||||
# ( example : "C:/Mingw-w32", "C:/Mingw-w64" )
|
||||
#
|
||||
# - if you want to compile faster using the "-j" option, don't forget
|
||||
# to install the appropriate version of the Pywin32 python extension
|
||||
# available from : http://sourceforge.net/projects/pywin32/files/
|
||||
# - if you want to compile faster using the "-j" option, don't forget
|
||||
# to install the appropriate version of the Pywin32 python extension
|
||||
# available from : http://sourceforge.net/projects/pywin32/files/
|
||||
#
|
||||
# - before running scons, you must add into the environment path
|
||||
# the path to the "/bin" directory of the Mingw version you want
|
||||
# to use :
|
||||
# - before running scons, you must add into the environment path
|
||||
# the path to the "/bin" directory of the Mingw version you want
|
||||
# to use :
|
||||
#
|
||||
# set PATH=C:/Mingw-w32/bin;%PATH%
|
||||
# set PATH=C:/Mingw-w32/bin;%PATH%
|
||||
#
|
||||
# - then, scons should be able to detect gcc.
|
||||
# - Mingw-w32 only compiles 32bits.
|
||||
# - Mingw-w64 only compiles 64bits.
|
||||
# - then, scons should be able to detect gcc.
|
||||
# - Mingw-w32 only compiles 32bits.
|
||||
# - Mingw-w64 only compiles 64bits.
|
||||
#
|
||||
# - it is possible to add them both at the same time into the PATH env,
|
||||
# if you also define the MINGW32_PREFIX and MINGW64_PREFIX environment
|
||||
# variables.
|
||||
# For instance, you could store that set of commands into a .bat script
|
||||
# that you would run just before scons :
|
||||
# - it is possible to add them both at the same time into the PATH env,
|
||||
# if you also define the MINGW32_PREFIX and MINGW64_PREFIX environment
|
||||
# variables.
|
||||
# For instance, you could store that set of commands into a .bat script
|
||||
# that you would run just before scons :
|
||||
#
|
||||
# set PATH=C:\mingw-w32\bin;%PATH%
|
||||
# set PATH=C:\mingw-w64\bin;%PATH%
|
||||
# set MINGW32_PREFIX=C:\mingw-w32\bin\
|
||||
# set MINGW64_PREFIX=C:\mingw-w64\bin\
|
||||
# set PATH=C:\mingw-w32\bin;%PATH%
|
||||
# set PATH=C:\mingw-w64\bin;%PATH%
|
||||
# set MINGW32_PREFIX=C:\mingw-w32\bin\
|
||||
# set MINGW64_PREFIX=C:\mingw-w64\bin\
|
||||
#
|
||||
#####
|
||||
# Notes about Mingw, Mingw-w64 and Mingw-w32 under Linux :
|
||||
#
|
||||
# - default toolchain prefixes are :
|
||||
# "i586-mingw32msvc-" for MinGW
|
||||
# "i686-w64-mingw32-" for Mingw-w32
|
||||
# "x86_64-w64-mingw32-" for Mingw-w64
|
||||
# - default toolchain prefixes are :
|
||||
# "i586-mingw32msvc-" for MinGW
|
||||
# "i686-w64-mingw32-" for Mingw-w32
|
||||
# "x86_64-w64-mingw32-" for Mingw-w64
|
||||
#
|
||||
# - if both MinGW and Mingw-w32 are installed on your system
|
||||
# Mingw-w32 should take the priority over MinGW.
|
||||
# - if both MinGW and Mingw-w32 are installed on your system
|
||||
# Mingw-w32 should take the priority over MinGW.
|
||||
#
|
||||
# - it is possible to manually override prefixes by defining
|
||||
# the MINGW32_PREFIX and MINGW64_PREFIX environment variables.
|
||||
# - it is possible to manually override prefixes by defining
|
||||
# the MINGW32_PREFIX and MINGW64_PREFIX environment variables.
|
||||
#
|
||||
#####
|
||||
# Notes about Mingw under Windows :
|
||||
#
|
||||
# - this is the MinGW version from http://mingw.org/
|
||||
# - install it into a path that does not contain spaces
|
||||
# ( example : "C:/MinGW" )
|
||||
# - several DirectX headers might be missing. You can copy them into
|
||||
# the C:/MinGW/include" directory from this page :
|
||||
# https://code.google.com/p/mingw-lib/source/browse/trunk/working/avcodec_to_widget_5/directx_include/
|
||||
# - before running scons, add the path to the "/bin" directory :
|
||||
# set PATH=C:/MinGW/bin;%PATH%
|
||||
# - scons should be able to detect gcc.
|
||||
# - this is the MinGW version from http://mingw.org/
|
||||
# - install it into a path that does not contain spaces
|
||||
# ( example : "C:/MinGW" )
|
||||
# - several DirectX headers might be missing. You can copy them into
|
||||
# the C:/MinGW/include" directory from this page :
|
||||
# https://code.google.com/p/mingw-lib/source/browse/trunk/working/avcodec_to_widget_5/directx_include/
|
||||
# - before running scons, add the path to the "/bin" directory :
|
||||
# set PATH=C:/MinGW/bin;%PATH%
|
||||
# - scons should be able to detect gcc.
|
||||
#
|
||||
|
||||
#####
|
||||
# TODO :
|
||||
#
|
||||
# - finish to cleanup this script to remove all the remains of previous hacks and workarounds
|
||||
# - make it work with the Windows7 SDK that is supposed to enable 64bits compilation for MSVC2010-Express
|
||||
# - confirm it works well with other Visual Studio versions.
|
||||
# - update the wiki about the pywin32 extension required for the "-j" option under Windows.
|
||||
# - update the wiki to document MINGW32_PREFIX and MINGW64_PREFIX
|
||||
# - finish to cleanup this script to remove all the remains of previous hacks and workarounds
|
||||
# - make it work with the Windows7 SDK that is supposed to enable 64bits compilation for MSVC2010-Express
|
||||
# - confirm it works well with other Visual Studio versions.
|
||||
# - update the wiki about the pywin32 extension required for the "-j" option under Windows.
|
||||
# - update the wiki to document MINGW32_PREFIX and MINGW64_PREFIX
|
||||
#
|
||||
|
||||
import os
|
||||
|
||||
import sys
|
||||
|
||||
import methods
|
||||
|
||||
def is_active():
|
||||
return True
|
||||
|
@ -97,8 +98,18 @@ def is_active():
|
|||
|
||||
def get_name():
|
||||
return "Windows"
|
||||
if (os.getenv("MINGW32_PREFIX")):
|
||||
mingw32=os.getenv("MINGW32_PREFIX")
|
||||
mingw = mingw32
|
||||
if (os.getenv("MINGW64_PREFIX")):
|
||||
mingw64=os.getenv("MINGW64_PREFIX")
|
||||
|
||||
|
||||
return [
|
||||
('mingw_prefix','Mingw Prefix',mingw32),
|
||||
('mingw_prefix_64','Mingw Prefix 64 bits',mingw64),
|
||||
]
|
||||
|
||||
def can_build():
|
||||
|
||||
if (os.name == "nt"):
|
||||
|
@ -265,7 +276,7 @@ def configure(env):
|
|||
env['ENV'] = os.environ
|
||||
|
||||
# This detection function needs the tools env (that is env['ENV'], not SCons's env), and that is why it's this far bellow in the code
|
||||
compiler_version_str = detect_visual_c_compiler_version(env['ENV'])
|
||||
compiler_version_str = methods.detect_visual_c_compiler_version(env['ENV'])
|
||||
|
||||
# Note: this detection/override code from here onward should be here instead of in SConstruct because it's platform and compiler specific (MSVC/Windows)
|
||||
if(env["bits"] != "default"):
|
||||
|
@ -380,73 +391,7 @@ def configure(env):
|
|||
env['is_mingw'] = True
|
||||
env.Append(BUILDERS={'RES': env.Builder(action=build_res_file, suffix='.o', src_suffix='.rc')})
|
||||
|
||||
import methods
|
||||
env.Append(BUILDERS={'GLSL120': env.Builder(action=methods.build_legacygl_headers, suffix='glsl.h', src_suffix='.glsl')})
|
||||
env.Append(BUILDERS={'GLSL': env.Builder(action=methods.build_glsl_headers, suffix='glsl.h', src_suffix='.glsl')})
|
||||
env.Append(BUILDERS={'HLSL9': env.Builder(action=methods.build_hlsl_dx9_headers, suffix='hlsl.h', src_suffix='.hlsl')})
|
||||
env.Append(BUILDERS={'GLSL120GLES': env.Builder(action=methods.build_gles2_headers, suffix='glsl.h', src_suffix='.glsl')})
|
||||
|
||||
|
||||
def detect_visual_c_compiler_version(tools_env):
|
||||
# tools_env is the variable scons uses to call tools that execute tasks, SCons's env['ENV'] that executes tasks...
|
||||
# (see the SCons documentation for more information on what it does)...
|
||||
# in order for this function to be well encapsulated i choose to force it to recieve SCons's TOOLS env (env['ENV']
|
||||
# and not scons setup environment (env)... so make sure you call the right environment on it or it will fail to detect
|
||||
# the propper vc version that will be called
|
||||
|
||||
# These is no flag to give to visual c compilers to set the architecture, ie scons bits argument (32,64,ARM etc)
|
||||
# There are many different cl.exe files that are run, and each one compiles & links to a different architecture
|
||||
# As far as I know, the only way to figure out what compiler will be run when Scons calls cl.exe via Program()
|
||||
# is to check the PATH varaible and figure out which one will be called first. Code bellow does that and returns:
|
||||
# the following string values:
|
||||
|
||||
# "" Compiler not detected
|
||||
# "amd64" Native 64 bit compiler
|
||||
# "amd64_x86" 64 bit Cross Compiler for 32 bit
|
||||
# "x86" Native 32 bit compiler
|
||||
# "x86_amd64" 32 bit Cross Compiler for 64 bit
|
||||
|
||||
# There are other architectures, but Godot does not support them currently, so this function does not detect arm/amd64_arm
|
||||
# and similar architectures/compilers
|
||||
|
||||
# Set chosen compiler to "not detected"
|
||||
vc_chosen_compiler_index = -1
|
||||
vc_chosen_compiler_str = ""
|
||||
|
||||
# find() works with -1 so big ifs bellow are needed... the simplest solution, in fact
|
||||
# First test if amd64 and amd64_x86 compilers are present in the path
|
||||
vc_amd64_compiler_detection_index = tools_env["PATH"].find(tools_env["VCINSTALLDIR"] + "BIN\\amd64;")
|
||||
if(vc_amd64_compiler_detection_index > -1):
|
||||
vc_chosen_compiler_index = vc_amd64_compiler_detection_index
|
||||
vc_chosen_compiler_str = "amd64"
|
||||
|
||||
vc_amd64_x86_compiler_detection_index = tools_env["PATH"].find(tools_env["VCINSTALLDIR"] + "BIN\\amd64_x86;")
|
||||
if(vc_amd64_x86_compiler_detection_index > -1
|
||||
and (vc_chosen_compiler_index == -1
|
||||
or vc_chosen_compiler_index > vc_amd64_x86_compiler_detection_index)):
|
||||
vc_chosen_compiler_index = vc_amd64_x86_compiler_detection_index
|
||||
vc_chosen_compiler_str = "amd64_x86"
|
||||
|
||||
# Now check the 32 bit compilers
|
||||
vc_x86_compiler_detection_index = tools_env["PATH"].find(tools_env["VCINSTALLDIR"] + "BIN;")
|
||||
if(vc_x86_compiler_detection_index > -1
|
||||
and (vc_chosen_compiler_index == -1
|
||||
or vc_chosen_compiler_index > vc_x86_compiler_detection_index)):
|
||||
vc_chosen_compiler_index = vc_x86_compiler_detection_index
|
||||
vc_chosen_compiler_str = "x86"
|
||||
|
||||
vc_x86_amd64_compiler_detection_index = tools_env["PATH"].find(tools_env['VCINSTALLDIR'] + "BIN\\x86_amd64;")
|
||||
if(vc_x86_amd64_compiler_detection_index > -1
|
||||
and (vc_chosen_compiler_index == -1
|
||||
or vc_chosen_compiler_index > vc_x86_amd64_compiler_detection_index)):
|
||||
vc_chosen_compiler_index = vc_x86_amd64_compiler_detection_index
|
||||
vc_chosen_compiler_str = "x86_amd64"
|
||||
|
||||
# debug help
|
||||
# print vc_amd64_compiler_detection_index
|
||||
# print vc_amd64_x86_compiler_detection_index
|
||||
# print vc_x86_compiler_detection_index
|
||||
# print vc_x86_amd64_compiler_detection_index
|
||||
# print "chosen "+str(vc_chosen_compiler_index)+ " | "+str(vc_chosen_compiler_str)
|
||||
|
||||
return vc_chosen_compiler_str
|
||||
|
|
|
@ -4,10 +4,21 @@ Import('env')
|
|||
|
||||
files = [
|
||||
'thread_winrt.cpp',
|
||||
# '#platform/windows/stream_peer_winsock.cpp',
|
||||
'#platform/windows/tcp_server_winsock.cpp',
|
||||
'#platform/windows/packet_peer_udp_winsock.cpp',
|
||||
'#platform/windows/stream_peer_winsock.cpp',
|
||||
'#platform/windows/key_mapping_win.cpp',
|
||||
'joystick_winrt.cpp',
|
||||
'gl_context_egl.cpp',
|
||||
'audio_driver_winrt.cpp',
|
||||
'app.cpp',
|
||||
'os_winrt.cpp',
|
||||
]
|
||||
|
||||
env.Program('#bin/godot', files)
|
||||
if "build_angle" in env and env["build_angle"]:
|
||||
cmd = env.AlwaysBuild(env.ANGLE('libANGLE.lib', None))
|
||||
|
||||
prog = env.Program('#bin/godot', files)
|
||||
|
||||
if "build_angle" in env and env["build_angle"]:
|
||||
env.Depends(prog, [cmd])
|
||||
|
|
|
@ -35,18 +35,27 @@
|
|||
|
||||
#include "core/os/dir_access.h"
|
||||
#include "core/os/file_access.h"
|
||||
#include "core/os/keyboard.h"
|
||||
|
||||
#include "main/main.h"
|
||||
|
||||
#include "platform/windows/key_mapping_win.h"
|
||||
|
||||
#include <collection.h>
|
||||
|
||||
using namespace Windows::ApplicationModel::Core;
|
||||
using namespace Windows::ApplicationModel::Activation;
|
||||
using namespace Windows::UI::Core;
|
||||
using namespace Windows::UI::Input;
|
||||
using namespace Windows::Devices::Input;
|
||||
using namespace Windows::UI::Xaml::Input;
|
||||
using namespace Windows::Foundation;
|
||||
using namespace Windows::Graphics::Display;
|
||||
using namespace Windows::System;
|
||||
using namespace Windows::System::Threading::Core;
|
||||
using namespace Microsoft::WRL;
|
||||
using namespace Platform;
|
||||
|
||||
using namespace $ext_safeprojectname$;
|
||||
using namespace GodotWinRT;
|
||||
|
||||
// Helper to convert a length in device-independent pixels (DIPs) to a length in physical pixels.
|
||||
inline float ConvertDipsToPixels(float dips, float dpi) {
|
||||
|
@ -55,7 +64,7 @@ inline float ConvertDipsToPixels(float dips, float dpi) {
|
|||
}
|
||||
|
||||
// Implementation of the IFrameworkViewSource interface, necessary to run our app.
|
||||
ref class HelloTriangleApplicationSource sealed : Windows::ApplicationModel::Core::IFrameworkViewSource {
|
||||
ref class GodotWinrtViewSource sealed : Windows::ApplicationModel::Core::IFrameworkViewSource {
|
||||
public:
|
||||
virtual Windows::ApplicationModel::Core::IFrameworkView ^ CreateView() {
|
||||
return ref new App();
|
||||
|
@ -64,8 +73,8 @@ public:
|
|||
|
||||
// The main function creates an IFrameworkViewSource for our app, and runs the app.
|
||||
[Platform::MTAThread] int main(Platform::Array<Platform::String ^> ^) {
|
||||
auto helloTriangleApplicationSource = ref new HelloTriangleApplicationSource();
|
||||
CoreApplication::Run(helloTriangleApplicationSource);
|
||||
auto godotApplicationSource = ref new GodotWinrtViewSource();
|
||||
CoreApplication::Run(godotApplicationSource);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -76,7 +85,8 @@ App::App()
|
|||
mWindowHeight(0),
|
||||
mEglDisplay(EGL_NO_DISPLAY),
|
||||
mEglContext(EGL_NO_CONTEXT),
|
||||
mEglSurface(EGL_NO_SURFACE) {
|
||||
mEglSurface(EGL_NO_SURFACE),
|
||||
number_of_contacts(0) {
|
||||
}
|
||||
|
||||
// The first method called when the IFrameworkView is being created.
|
||||
|
@ -115,18 +125,29 @@ void App::SetWindow(CoreWindow ^ p_window) {
|
|||
|
||||
window->PointerPressed +=
|
||||
ref new TypedEventHandler<CoreWindow ^, PointerEventArgs ^>(this, &App::OnPointerPressed);
|
||||
|
||||
window->PointerMoved +=
|
||||
ref new TypedEventHandler<CoreWindow ^, PointerEventArgs ^>(this, &App::OnPointerMoved);
|
||||
|
||||
window->PointerReleased +=
|
||||
ref new TypedEventHandler<CoreWindow ^, PointerEventArgs ^>(this, &App::OnPointerReleased);
|
||||
window->PointerWheelChanged +=
|
||||
ref new TypedEventHandler<CoreWindow ^, PointerEventArgs ^>(this, &App::OnPointerWheelChanged);
|
||||
|
||||
//window->PointerWheelChanged +=
|
||||
// ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &App::OnPointerWheelChanged);
|
||||
mouseChangedNotifier = SignalNotifier::AttachToEvent(L"os_mouse_mode_changed", ref new SignalHandler(
|
||||
this, &App::OnMouseModeChanged));
|
||||
|
||||
char *args[] = { "-path", "game", NULL };
|
||||
Main::setup("winrt", 2, args, false);
|
||||
mouseChangedNotifier->Enable();
|
||||
|
||||
window->CharacterReceived +=
|
||||
ref new TypedEventHandler<CoreWindow ^, CharacterReceivedEventArgs ^>(this, &App::OnCharacterReceived);
|
||||
window->KeyDown +=
|
||||
ref new TypedEventHandler<CoreWindow ^, KeyEventArgs ^>(this, &App::OnKeyDown);
|
||||
window->KeyUp +=
|
||||
ref new TypedEventHandler<CoreWindow ^, KeyEventArgs ^>(this, &App::OnKeyUp);
|
||||
|
||||
unsigned int argc;
|
||||
char **argv = get_command_line(&argc);
|
||||
|
||||
Main::setup("winrt", argc, argv, false);
|
||||
|
||||
// The CoreWindow has been created, so EGL can be initialized.
|
||||
ContextEGL *context = memnew(ContextEGL(window));
|
||||
|
@ -232,7 +253,7 @@ static int _get_finger(uint32_t p_touch_id) {
|
|||
return p_touch_id % 31; // for now
|
||||
};
|
||||
|
||||
void App::pointer_event(Windows::UI::Core::CoreWindow ^ sender, Windows::UI::Core::PointerEventArgs ^ args, bool p_pressed) {
|
||||
void App::pointer_event(Windows::UI::Core::CoreWindow ^ sender, Windows::UI::Core::PointerEventArgs ^ args, bool p_pressed, bool p_is_wheel) {
|
||||
|
||||
Windows::UI::Input::PointerPoint ^ point = args->CurrentPoint;
|
||||
Windows::Foundation::Point pos = _get_pixel_position(window, point->Position, os);
|
||||
|
@ -251,7 +272,7 @@ void App::pointer_event(Windows::UI::Core::CoreWindow ^ sender, Windows::UI::Cor
|
|||
last_touch_y[event.screen_touch.index] = pos.Y;
|
||||
|
||||
os->input_event(event);
|
||||
if (event.screen_touch.index != 0)
|
||||
if (number_of_contacts > 1)
|
||||
return;
|
||||
|
||||
}; // fallthrought of sorts
|
||||
|
@ -266,6 +287,14 @@ void App::pointer_event(Windows::UI::Core::CoreWindow ^ sender, Windows::UI::Cor
|
|||
event.mouse_button.global_x = pos.X;
|
||||
event.mouse_button.global_y = pos.Y;
|
||||
|
||||
if (p_is_wheel) {
|
||||
if (point->Properties->MouseWheelDelta > 0) {
|
||||
event.mouse_button.button_index = point->Properties->IsHorizontalMouseWheel ? BUTTON_WHEEL_RIGHT : BUTTON_WHEEL_UP;
|
||||
} else if (point->Properties->MouseWheelDelta < 0) {
|
||||
event.mouse_button.button_index = point->Properties->IsHorizontalMouseWheel ? BUTTON_WHEEL_LEFT : BUTTON_WHEEL_DOWN;
|
||||
}
|
||||
}
|
||||
|
||||
last_touch_x[31] = pos.X;
|
||||
last_touch_y[31] = pos.Y;
|
||||
|
||||
|
@ -274,20 +303,52 @@ void App::pointer_event(Windows::UI::Core::CoreWindow ^ sender, Windows::UI::Cor
|
|||
|
||||
void App::OnPointerPressed(Windows::UI::Core::CoreWindow ^ sender, Windows::UI::Core::PointerEventArgs ^ args) {
|
||||
|
||||
number_of_contacts++;
|
||||
pointer_event(sender, args, true);
|
||||
};
|
||||
|
||||
void App::OnPointerReleased(Windows::UI::Core::CoreWindow ^ sender, Windows::UI::Core::PointerEventArgs ^ args) {
|
||||
|
||||
number_of_contacts--;
|
||||
pointer_event(sender, args, false);
|
||||
};
|
||||
|
||||
void App::OnPointerWheelChanged(Windows::UI::Core::CoreWindow ^ sender, Windows::UI::Core::PointerEventArgs ^ args) {
|
||||
|
||||
pointer_event(sender, args, true, true);
|
||||
}
|
||||
|
||||
void App::OnMouseModeChanged(Windows::System::Threading::Core::SignalNotifier ^ signalNotifier, bool timedOut) {
|
||||
|
||||
OS::MouseMode mode = os->get_mouse_mode();
|
||||
SignalNotifier ^ notifier = mouseChangedNotifier;
|
||||
|
||||
window->Dispatcher->RunAsync(
|
||||
CoreDispatcherPriority::High,
|
||||
ref new DispatchedHandler(
|
||||
[mode, notifier, this]() {
|
||||
if (mode == OS::MOUSE_MODE_CAPTURED) {
|
||||
|
||||
this->MouseMovedToken = MouseDevice::GetForCurrentView()->MouseMoved +=
|
||||
ref new TypedEventHandler<MouseDevice ^, MouseEventArgs ^>(this, &App::OnMouseMoved);
|
||||
|
||||
} else {
|
||||
|
||||
MouseDevice::GetForCurrentView()->MouseMoved -= MouseMovedToken;
|
||||
}
|
||||
|
||||
notifier->Enable();
|
||||
}));
|
||||
|
||||
ResetEvent(os->mouse_mode_changed);
|
||||
}
|
||||
|
||||
void App::OnPointerMoved(Windows::UI::Core::CoreWindow ^ sender, Windows::UI::Core::PointerEventArgs ^ args) {
|
||||
|
||||
Windows::UI::Input::PointerPoint ^ point = args->CurrentPoint;
|
||||
Windows::Foundation::Point pos = _get_pixel_position(window, point->Position, os);
|
||||
|
||||
if (_is_touch(point)) {
|
||||
if (point->IsInContact && _is_touch(point)) {
|
||||
|
||||
InputEvent event;
|
||||
event.type = InputEvent::SCREEN_DRAG;
|
||||
|
@ -299,11 +360,15 @@ void App::OnPointerMoved(Windows::UI::Core::CoreWindow ^ sender, Windows::UI::Co
|
|||
event.screen_drag.relative_y = event.screen_drag.y - last_touch_y[event.screen_drag.index];
|
||||
|
||||
os->input_event(event);
|
||||
if (event.screen_drag.index != 0)
|
||||
if (number_of_contacts > 1)
|
||||
return;
|
||||
|
||||
}; // fallthrought of sorts
|
||||
|
||||
// In case the mouse grabbed, MouseMoved will handle this
|
||||
if (os->get_mouse_mode() == OS::MouseMode::MOUSE_MODE_CAPTURED)
|
||||
return;
|
||||
|
||||
InputEvent event;
|
||||
event.type = InputEvent::MOUSE_MOTION;
|
||||
event.device = 0;
|
||||
|
@ -314,13 +379,81 @@ void App::OnPointerMoved(Windows::UI::Core::CoreWindow ^ sender, Windows::UI::Co
|
|||
event.mouse_motion.relative_x = pos.X - last_touch_x[31];
|
||||
event.mouse_motion.relative_y = pos.Y - last_touch_y[31];
|
||||
|
||||
last_mouse_pos = pos;
|
||||
|
||||
os->input_event(event);
|
||||
};
|
||||
}
|
||||
|
||||
void App::OnMouseMoved(MouseDevice ^ mouse_device, MouseEventArgs ^ args) {
|
||||
|
||||
// In case the mouse isn't grabbed, PointerMoved will handle this
|
||||
if (os->get_mouse_mode() != OS::MouseMode::MOUSE_MODE_CAPTURED)
|
||||
return;
|
||||
|
||||
Windows::Foundation::Point pos;
|
||||
pos.X = last_mouse_pos.X + args->MouseDelta.X;
|
||||
pos.Y = last_mouse_pos.Y + args->MouseDelta.Y;
|
||||
|
||||
InputEvent event;
|
||||
event.type = InputEvent::MOUSE_MOTION;
|
||||
event.device = 0;
|
||||
event.mouse_motion.x = pos.X;
|
||||
event.mouse_motion.y = pos.Y;
|
||||
event.mouse_motion.global_x = pos.X;
|
||||
event.mouse_motion.global_y = pos.Y;
|
||||
event.mouse_motion.relative_x = args->MouseDelta.X;
|
||||
event.mouse_motion.relative_y = args->MouseDelta.Y;
|
||||
|
||||
last_mouse_pos = pos;
|
||||
|
||||
os->input_event(event);
|
||||
}
|
||||
|
||||
void App::key_event(Windows::UI::Core::CoreWindow ^ sender, bool p_pressed, Windows::UI::Core::KeyEventArgs ^ key_args, Windows::UI::Core::CharacterReceivedEventArgs ^ char_args) {
|
||||
|
||||
OSWinrt::KeyEvent ke;
|
||||
|
||||
InputModifierState mod;
|
||||
mod.meta = false;
|
||||
mod.command = false;
|
||||
mod.control = sender->GetAsyncKeyState(VirtualKey::Control) == CoreVirtualKeyStates::Down;
|
||||
mod.alt = sender->GetAsyncKeyState(VirtualKey::Menu) == CoreVirtualKeyStates::Down;
|
||||
mod.shift = sender->GetAsyncKeyState(VirtualKey::Shift) == CoreVirtualKeyStates::Down;
|
||||
ke.mod_state = mod;
|
||||
|
||||
ke.pressed = p_pressed;
|
||||
|
||||
if (key_args != nullptr) {
|
||||
|
||||
ke.type = OSWinrt::KeyEvent::MessageType::KEY_EVENT_MESSAGE;
|
||||
ke.unicode = 0;
|
||||
ke.scancode = KeyMappingWindows::get_keysym((unsigned int)key_args->VirtualKey);
|
||||
ke.echo = (!p_pressed && !key_args->KeyStatus.IsKeyReleased) || (p_pressed && key_args->KeyStatus.WasKeyDown);
|
||||
|
||||
} else {
|
||||
|
||||
ke.type = OSWinrt::KeyEvent::MessageType::CHAR_EVENT_MESSAGE;
|
||||
ke.unicode = char_args->KeyCode;
|
||||
ke.scancode = 0;
|
||||
ke.echo = (!p_pressed && !char_args->KeyStatus.IsKeyReleased) || (p_pressed && char_args->KeyStatus.WasKeyDown);
|
||||
}
|
||||
|
||||
os->queue_key_event(ke);
|
||||
}
|
||||
void App::OnKeyDown(CoreWindow ^ sender, KeyEventArgs ^ args) {
|
||||
key_event(sender, true, args);
|
||||
}
|
||||
|
||||
void App::OnKeyUp(CoreWindow ^ sender, KeyEventArgs ^ args) {
|
||||
key_event(sender, false, args);
|
||||
}
|
||||
|
||||
void App::OnCharacterReceived(CoreWindow ^ sender, CharacterReceivedEventArgs ^ args) {
|
||||
key_event(sender, true, nullptr, args);
|
||||
}
|
||||
|
||||
// Initializes scene resources
|
||||
void App::Load(Platform::String ^ entryPoint) {
|
||||
//char* args[] = {"-test", "render", NULL};
|
||||
//Main::setup("winrt", 2, args);
|
||||
}
|
||||
|
||||
// This method is called after the window becomes active.
|
||||
|
@ -386,3 +519,94 @@ void App::UpdateWindowSize(Size size) {
|
|||
vm.resizable = false;
|
||||
os->set_video_mode(vm);
|
||||
}
|
||||
|
||||
char **App::get_command_line(unsigned int *out_argc) {
|
||||
|
||||
static char *fail_cl[] = { "-path", "game", NULL };
|
||||
*out_argc = 2;
|
||||
|
||||
FILE *f = _wfopen(L"__cl__.cl", L"rb");
|
||||
|
||||
if (f == NULL) {
|
||||
|
||||
wprintf(L"Couldn't open command line file.");
|
||||
return fail_cl;
|
||||
}
|
||||
|
||||
#define READ_LE_4(v) ((int)(##v[3] & 0xFF) << 24) | ((int)(##v[2] & 0xFF) << 16) | ((int)(##v[1] & 0xFF) << 8) | ((int)(##v[0] & 0xFF))
|
||||
#define CMD_MAX_LEN 65535
|
||||
|
||||
uint8_t len[4];
|
||||
int r = fread(len, sizeof(uint8_t), 4, f);
|
||||
|
||||
Platform::Collections::Vector<Platform::String ^> cl;
|
||||
|
||||
if (r < 4) {
|
||||
fclose(f);
|
||||
wprintf(L"Wrong cmdline length.");
|
||||
return (fail_cl);
|
||||
}
|
||||
|
||||
int argc = READ_LE_4(len);
|
||||
|
||||
for (int i = 0; i < argc; i++) {
|
||||
|
||||
r = fread(len, sizeof(uint8_t), 4, f);
|
||||
|
||||
if (r < 4) {
|
||||
fclose(f);
|
||||
wprintf(L"Wrong cmdline param length.");
|
||||
return (fail_cl);
|
||||
}
|
||||
|
||||
int strlen = READ_LE_4(len);
|
||||
|
||||
if (strlen > CMD_MAX_LEN) {
|
||||
fclose(f);
|
||||
wprintf(L"Wrong command length.");
|
||||
return (fail_cl);
|
||||
}
|
||||
|
||||
char *arg = new char[strlen + 1];
|
||||
r = fread(arg, sizeof(char), strlen, f);
|
||||
arg[strlen] = '\0';
|
||||
|
||||
if (r == strlen) {
|
||||
|
||||
int warg_size = MultiByteToWideChar(CP_UTF8, 0, arg, -1, NULL, 0);
|
||||
wchar_t *warg = new wchar_t[warg_size];
|
||||
|
||||
MultiByteToWideChar(CP_UTF8, 0, arg, -1, warg, warg_size);
|
||||
|
||||
cl.Append(ref new Platform::String(warg, warg_size));
|
||||
|
||||
} else {
|
||||
|
||||
delete[] arg;
|
||||
fclose(f);
|
||||
wprintf(L"Error reading command.");
|
||||
return (fail_cl);
|
||||
}
|
||||
}
|
||||
|
||||
#undef READ_LE_4
|
||||
#undef CMD_MAX_LEN
|
||||
|
||||
fclose(f);
|
||||
|
||||
char **ret = new char *[cl.Size + 1];
|
||||
|
||||
for (int i = 0; i < cl.Size; i++) {
|
||||
|
||||
int arg_size = WideCharToMultiByte(CP_UTF8, 0, cl.GetAt(i)->Data(), -1, NULL, 0, NULL, NULL);
|
||||
char *arg = new char[arg_size];
|
||||
|
||||
WideCharToMultiByte(CP_UTF8, 0, cl.GetAt(i)->Data(), -1, arg, arg_size, NULL, NULL);
|
||||
|
||||
ret[i] = arg;
|
||||
}
|
||||
ret[cl.Size] = NULL;
|
||||
*out_argc = cl.Size;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,32 @@
|
|||
#pragma once
|
||||
/*************************************************************************/
|
||||
/* app.h */
|
||||
/*************************************************************************/
|
||||
/* This file is part of: */
|
||||
/* GODOT ENGINE */
|
||||
/* http://www.godotengine.org */
|
||||
/*************************************************************************/
|
||||
/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
/* "Software"), to deal in the Software without restriction, including */
|
||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||
/* the following conditions: */
|
||||
/* */
|
||||
/* The above copyright notice and this permission notice shall be */
|
||||
/* included in all copies or substantial portions of the Software. */
|
||||
/* */
|
||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
|
||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/*************************************************************************/
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
|
||||
|
@ -7,51 +35,74 @@
|
|||
#include "GLES2/gl2.h"
|
||||
#include "os_winrt.h"
|
||||
|
||||
namespace $ext_safeprojectname$ {
|
||||
ref class App sealed : public Windows::ApplicationModel::Core::IFrameworkView {
|
||||
public:
|
||||
App();
|
||||
namespace GodotWinRT
|
||||
{
|
||||
ref class App sealed : public Windows::ApplicationModel::Core::IFrameworkView
|
||||
{
|
||||
public:
|
||||
App();
|
||||
|
||||
// IFrameworkView Methods.
|
||||
virtual void Initialize(Windows::ApplicationModel::Core::CoreApplicationView ^ applicationView);
|
||||
virtual void SetWindow(Windows::UI::Core::CoreWindow ^ window);
|
||||
virtual void Load(Platform::String ^ entryPoint);
|
||||
virtual void Run();
|
||||
virtual void Uninitialize();
|
||||
// IFrameworkView Methods.
|
||||
virtual void Initialize(Windows::ApplicationModel::Core::CoreApplicationView^ applicationView);
|
||||
virtual void SetWindow(Windows::UI::Core::CoreWindow^ window);
|
||||
virtual void Load(Platform::String^ entryPoint);
|
||||
virtual void Run();
|
||||
virtual void Uninitialize();
|
||||
|
||||
private:
|
||||
void RecreateRenderer();
|
||||
property Windows::Foundation::EventRegistrationToken MouseMovedToken {
|
||||
Windows::Foundation::EventRegistrationToken get() { return this->mouseMovedToken; }
|
||||
void set(Windows::Foundation::EventRegistrationToken p_token) { this->mouseMovedToken = p_token; }
|
||||
};
|
||||
|
||||
// Application lifecycle event handlers.
|
||||
void OnActivated(Windows::ApplicationModel::Core::CoreApplicationView ^ applicationView, Windows::ApplicationModel::Activation::IActivatedEventArgs ^ args);
|
||||
private:
|
||||
void RecreateRenderer();
|
||||
|
||||
// Window event handlers.
|
||||
void OnWindowSizeChanged(Windows::UI::Core::CoreWindow ^ sender, Windows::UI::Core::WindowSizeChangedEventArgs ^ args);
|
||||
void OnVisibilityChanged(Windows::UI::Core::CoreWindow ^ sender, Windows::UI::Core::VisibilityChangedEventArgs ^ args);
|
||||
void OnWindowClosed(Windows::UI::Core::CoreWindow ^ sender, Windows::UI::Core::CoreWindowEventArgs ^ args);
|
||||
// Application lifecycle event handlers.
|
||||
void OnActivated(Windows::ApplicationModel::Core::CoreApplicationView^ applicationView, Windows::ApplicationModel::Activation::IActivatedEventArgs^ args);
|
||||
|
||||
void pointer_event(Windows::UI::Core::CoreWindow ^ sender, Windows::UI::Core::PointerEventArgs ^ args, bool p_pressed);
|
||||
void OnPointerPressed(Windows::UI::Core::CoreWindow ^ sender, Windows::UI::Core::PointerEventArgs ^ args);
|
||||
void OnPointerReleased(Windows::UI::Core::CoreWindow ^ sender, Windows::UI::Core::PointerEventArgs ^ args);
|
||||
void OnPointerMoved(Windows::UI::Core::CoreWindow ^ sender, Windows::UI::Core::PointerEventArgs ^ args);
|
||||
// Window event handlers.
|
||||
void OnWindowSizeChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::WindowSizeChangedEventArgs^ args);
|
||||
void OnVisibilityChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::VisibilityChangedEventArgs^ args);
|
||||
void OnWindowClosed(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::CoreWindowEventArgs^ args);
|
||||
|
||||
void UpdateWindowSize(Windows::Foundation::Size size);
|
||||
void InitializeEGL(Windows::UI::Core::CoreWindow ^ window);
|
||||
void CleanupEGL();
|
||||
void pointer_event(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args, bool p_pressed, bool p_is_wheel = false);
|
||||
void OnPointerPressed(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args);
|
||||
void OnPointerReleased(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args);
|
||||
void OnPointerMoved(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args);
|
||||
void OnMouseMoved(Windows::Devices::Input::MouseDevice^ mouse_device, Windows::Devices::Input::MouseEventArgs^ args);
|
||||
void OnPointerWheelChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args);
|
||||
|
||||
bool mWindowClosed;
|
||||
bool mWindowVisible;
|
||||
GLsizei mWindowWidth;
|
||||
GLsizei mWindowHeight;
|
||||
Windows::System::Threading::Core::SignalNotifier^ mouseChangedNotifier;
|
||||
Windows::Foundation::EventRegistrationToken mouseMovedToken;
|
||||
void OnMouseModeChanged(Windows::System::Threading::Core::SignalNotifier^ signalNotifier, bool timedOut);
|
||||
|
||||
EGLDisplay mEglDisplay;
|
||||
EGLContext mEglContext;
|
||||
EGLSurface mEglSurface;
|
||||
void key_event(Windows::UI::Core::CoreWindow^ sender, bool p_pressed, Windows::UI::Core::KeyEventArgs^ key_args = nullptr, Windows::UI::Core::CharacterReceivedEventArgs^ char_args = nullptr);
|
||||
void OnKeyDown(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::KeyEventArgs^ args);
|
||||
void OnKeyUp(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::KeyEventArgs^ args);
|
||||
void OnCharacterReceived(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::CharacterReceivedEventArgs^ args);
|
||||
|
||||
CoreWindow ^ window;
|
||||
OSWinrt *os;
|
||||
void UpdateWindowSize(Windows::Foundation::Size size);
|
||||
void InitializeEGL(Windows::UI::Core::CoreWindow^ window);
|
||||
void CleanupEGL();
|
||||
|
||||
char** get_command_line(unsigned int* out_argc);
|
||||
|
||||
bool mWindowClosed;
|
||||
bool mWindowVisible;
|
||||
GLsizei mWindowWidth;
|
||||
GLsizei mWindowHeight;
|
||||
|
||||
EGLDisplay mEglDisplay;
|
||||
EGLContext mEglContext;
|
||||
EGLSurface mEglSurface;
|
||||
|
||||
CoreWindow^ window;
|
||||
OSWinrt* os;
|
||||
|
||||
int last_touch_x[32]; // 20 fingers, index 31 reserved for the mouse
|
||||
int last_touch_y[32];
|
||||
int number_of_contacts;
|
||||
Windows::Foundation::Point last_mouse_pos;
|
||||
};
|
||||
|
||||
int last_touch_x[32]; // 20 fingers, index 31 reserved for the mouse
|
||||
int last_touch_y[32];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1,244 @@
|
|||
/*************************************************************************/
|
||||
/* audio_driver_winrt.cpp */
|
||||
/*************************************************************************/
|
||||
/* This file is part of: */
|
||||
/* GODOT ENGINE */
|
||||
/* http://www.godotengine.org */
|
||||
/*************************************************************************/
|
||||
/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
/* "Software"), to deal in the Software without restriction, including */
|
||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||
/* the following conditions: */
|
||||
/* */
|
||||
/* The above copyright notice and this permission notice shall be */
|
||||
/* included in all copies or substantial portions of the Software. */
|
||||
/* */
|
||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
|
||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/*************************************************************************/
|
||||
#include "audio_driver_winrt.h"
|
||||
|
||||
#include "globals.h"
|
||||
#include "os/os.h"
|
||||
|
||||
using namespace Windows::Media;
|
||||
using namespace Windows::Media::Core;
|
||||
using namespace Windows::Media::MediaProperties;
|
||||
using namespace Windows::Media::Editing;
|
||||
using namespace Windows::Foundation;
|
||||
|
||||
const char * AudioDriverWinRT::get_name() const
|
||||
{
|
||||
return "WinRT";
|
||||
}
|
||||
|
||||
Error AudioDriverWinRT::init() {
|
||||
|
||||
active = false;
|
||||
thread_exited = false;
|
||||
exit_thread = false;
|
||||
pcm_open = false;
|
||||
samples_in = NULL;
|
||||
|
||||
|
||||
mix_rate = 48000;
|
||||
output_format = OUTPUT_STEREO;
|
||||
channels = 2;
|
||||
|
||||
int latency = GLOBAL_DEF("audio/output_latency", 25);
|
||||
buffer_size = nearest_power_of_2(latency * mix_rate / 1000);
|
||||
|
||||
samples_in = memnew_arr(int32_t, buffer_size*channels);
|
||||
for (int i = 0; i < AUDIO_BUFFERS; i++) {
|
||||
samples_out[i] = memnew_arr(int16_t, buffer_size*channels);
|
||||
xaudio_buffer[i].AudioBytes = buffer_size * channels * sizeof(int16_t);
|
||||
xaudio_buffer[i].pAudioData = (const BYTE*)(samples_out[i]);
|
||||
xaudio_buffer[i].Flags = 0;
|
||||
}
|
||||
|
||||
HRESULT hr;
|
||||
hr = XAudio2Create(&xaudio, 0, XAUDIO2_DEFAULT_PROCESSOR);
|
||||
if (hr != S_OK) {
|
||||
ERR_EXPLAIN("Error creating XAudio2 engine.");
|
||||
ERR_FAIL_V(ERR_UNAVAILABLE);
|
||||
}
|
||||
hr = xaudio->CreateMasteringVoice(&mastering_voice);
|
||||
if (hr != S_OK) {
|
||||
ERR_EXPLAIN("Error creating XAudio2 mastering voice.");
|
||||
ERR_FAIL_V(ERR_UNAVAILABLE);
|
||||
}
|
||||
|
||||
wave_format.nChannels = channels;
|
||||
wave_format.cbSize = 0;
|
||||
wave_format.nSamplesPerSec = mix_rate;
|
||||
wave_format.wFormatTag = WAVE_FORMAT_PCM;
|
||||
wave_format.wBitsPerSample = 16;
|
||||
wave_format.nBlockAlign = channels * wave_format.wBitsPerSample >> 3;
|
||||
wave_format.nAvgBytesPerSec = mix_rate * wave_format.nBlockAlign;
|
||||
|
||||
voice_callback = memnew(XAudio2DriverVoiceCallback);
|
||||
|
||||
hr = xaudio->CreateSourceVoice(&source_voice, &wave_format, 0, XAUDIO2_MAX_FREQ_RATIO, voice_callback);
|
||||
if (hr != S_OK) {
|
||||
ERR_EXPLAIN("Error creating XAudio2 source voice. " + itos(hr));
|
||||
ERR_FAIL_V(ERR_UNAVAILABLE);
|
||||
}
|
||||
|
||||
mutex = Mutex::create();
|
||||
thread = Thread::create(AudioDriverWinRT::thread_func, this);
|
||||
|
||||
return OK;
|
||||
};
|
||||
|
||||
void AudioDriverWinRT::thread_func(void* p_udata) {
|
||||
|
||||
AudioDriverWinRT* ad = (AudioDriverWinRT*)p_udata;
|
||||
|
||||
uint64_t usdelay = (ad->buffer_size / float(ad->mix_rate)) * 1000000;
|
||||
|
||||
while (!ad->exit_thread) {
|
||||
|
||||
|
||||
if (!ad->active) {
|
||||
|
||||
for (int i = 0; i < AUDIO_BUFFERS; i++) {
|
||||
ad->xaudio_buffer[i].Flags = XAUDIO2_END_OF_STREAM;
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
ad->lock();
|
||||
|
||||
ad->audio_server_process(ad->buffer_size, ad->samples_in);
|
||||
|
||||
ad->unlock();
|
||||
|
||||
for (unsigned int i = 0;i < ad->buffer_size*ad->channels;i++) {
|
||||
|
||||
ad->samples_out[ad->current_buffer][i] = ad->samples_in[i] >> 16;
|
||||
}
|
||||
|
||||
ad->xaudio_buffer[ad->current_buffer].Flags = 0;
|
||||
ad->xaudio_buffer[ad->current_buffer].AudioBytes = ad->buffer_size * ad->channels * sizeof(int16_t);
|
||||
ad->xaudio_buffer[ad->current_buffer].pAudioData = (const BYTE*)(ad->samples_out[ad->current_buffer]);
|
||||
ad->xaudio_buffer[ad->current_buffer].PlayBegin = 0;
|
||||
ad->source_voice->SubmitSourceBuffer(&(ad->xaudio_buffer[ad->current_buffer]));
|
||||
|
||||
ad->current_buffer = (ad->current_buffer + 1) % AUDIO_BUFFERS;
|
||||
|
||||
XAUDIO2_VOICE_STATE state;
|
||||
while (ad->source_voice->GetState(&state), state.BuffersQueued > AUDIO_BUFFERS - 1)
|
||||
{
|
||||
WaitForSingleObject(ad->voice_callback->buffer_end_event, INFINITE);
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
ad->thread_exited = true;
|
||||
|
||||
};
|
||||
|
||||
void AudioDriverWinRT::start() {
|
||||
|
||||
active = true;
|
||||
HRESULT hr = source_voice->Start(0);
|
||||
if (hr != S_OK) {
|
||||
ERR_EXPLAIN("XAudio2 start error " + itos(hr));
|
||||
ERR_FAIL();
|
||||
}
|
||||
};
|
||||
|
||||
int AudioDriverWinRT::get_mix_rate() const {
|
||||
|
||||
return mix_rate;
|
||||
};
|
||||
|
||||
AudioDriverSW::OutputFormat AudioDriverWinRT::get_output_format() const {
|
||||
|
||||
return output_format;
|
||||
};
|
||||
|
||||
float AudioDriverWinRT::get_latency() {
|
||||
|
||||
XAUDIO2_PERFORMANCE_DATA perf_data;
|
||||
xaudio->GetPerformanceData(&perf_data);
|
||||
if (perf_data.CurrentLatencyInSamples) {
|
||||
return (float)(perf_data.CurrentLatencyInSamples / ((float)mix_rate));
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void AudioDriverWinRT::lock() {
|
||||
|
||||
if (!thread || !mutex)
|
||||
return;
|
||||
mutex->lock();
|
||||
};
|
||||
void AudioDriverWinRT::unlock() {
|
||||
|
||||
if (!thread || !mutex)
|
||||
return;
|
||||
mutex->unlock();
|
||||
};
|
||||
|
||||
void AudioDriverWinRT::finish() {
|
||||
|
||||
if (!thread)
|
||||
return;
|
||||
|
||||
exit_thread = true;
|
||||
Thread::wait_to_finish(thread);
|
||||
|
||||
if (source_voice) {
|
||||
source_voice->Stop(0);
|
||||
memdelete(source_voice);
|
||||
}
|
||||
|
||||
if (samples_in) {
|
||||
memdelete_arr(samples_in);
|
||||
};
|
||||
if (samples_out[0]) {
|
||||
for (int i = 0; i < AUDIO_BUFFERS; i++) {
|
||||
memdelete_arr(samples_out[i]);
|
||||
}
|
||||
};
|
||||
|
||||
memdelete(voice_callback);
|
||||
memdelete(mastering_voice);
|
||||
|
||||
memdelete(thread);
|
||||
if (mutex)
|
||||
memdelete(mutex);
|
||||
thread = NULL;
|
||||
};
|
||||
|
||||
AudioDriverWinRT::AudioDriverWinRT() {
|
||||
|
||||
mutex = NULL;
|
||||
thread = NULL;
|
||||
wave_format = { 0 };
|
||||
for (int i = 0; i < AUDIO_BUFFERS; i++) {
|
||||
xaudio_buffer[i] = { 0 };
|
||||
samples_out[i] = 0;
|
||||
}
|
||||
current_buffer = 0;
|
||||
};
|
||||
|
||||
AudioDriverWinRT::~AudioDriverWinRT() {
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
|
@ -0,0 +1,109 @@
|
|||
/*************************************************************************/
|
||||
/* audio_driver_winrt.h */
|
||||
/*************************************************************************/
|
||||
/* This file is part of: */
|
||||
/* GODOT ENGINE */
|
||||
/* http://www.godotengine.org */
|
||||
/*************************************************************************/
|
||||
/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
/* "Software"), to deal in the Software without restriction, including */
|
||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||
/* the following conditions: */
|
||||
/* */
|
||||
/* The above copyright notice and this permission notice shall be */
|
||||
/* included in all copies or substantial portions of the Software. */
|
||||
/* */
|
||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
|
||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/*************************************************************************/
|
||||
#ifndef AUDIO_DRIVER_WINRT_H
|
||||
#define AUDIO_DRIVER_WINRT_H
|
||||
|
||||
#include "servers/audio/audio_server_sw.h"
|
||||
|
||||
#include "core/os/thread.h"
|
||||
#include "core/os/mutex.h"
|
||||
|
||||
#include <windows.h>
|
||||
#include <mmsystem.h>
|
||||
#include <mmreg.h>
|
||||
#include <xaudio2.h>
|
||||
#include <wrl/client.h>
|
||||
|
||||
class AudioDriverWinRT : public AudioDriverSW {
|
||||
|
||||
enum {
|
||||
AUDIO_BUFFERS = 2
|
||||
};
|
||||
|
||||
struct XAudio2DriverVoiceCallback : public IXAudio2VoiceCallback {
|
||||
|
||||
HANDLE buffer_end_event;
|
||||
XAudio2DriverVoiceCallback() : buffer_end_event(CreateEvent(NULL, FALSE, FALSE, NULL)) {}
|
||||
void STDMETHODCALLTYPE OnBufferEnd(void* pBufferContext) { /*print_line("buffer ended");*/ SetEvent(buffer_end_event); }
|
||||
|
||||
//Unused methods are stubs
|
||||
void STDMETHODCALLTYPE OnStreamEnd() { }
|
||||
void STDMETHODCALLTYPE OnVoiceProcessingPassEnd() { }
|
||||
void STDMETHODCALLTYPE OnVoiceProcessingPassStart(UINT32 SamplesRequired) { }
|
||||
void STDMETHODCALLTYPE OnBufferStart(void * pBufferContext) { }
|
||||
void STDMETHODCALLTYPE OnLoopEnd(void * pBufferContext) { }
|
||||
void STDMETHODCALLTYPE OnVoiceError(void * pBufferContext, HRESULT Error) { }
|
||||
|
||||
};
|
||||
|
||||
Thread* thread;
|
||||
Mutex* mutex;
|
||||
|
||||
int32_t* samples_in;
|
||||
int16_t* samples_out[AUDIO_BUFFERS];
|
||||
|
||||
static void thread_func(void* p_udata);
|
||||
int buffer_size;
|
||||
|
||||
unsigned int mix_rate;
|
||||
OutputFormat output_format;
|
||||
|
||||
int channels;
|
||||
|
||||
bool active;
|
||||
bool thread_exited;
|
||||
mutable bool exit_thread;
|
||||
bool pcm_open;
|
||||
|
||||
WAVEFORMATEX wave_format;
|
||||
Microsoft::WRL::ComPtr<IXAudio2> xaudio;
|
||||
int current_buffer;
|
||||
IXAudio2MasteringVoice* mastering_voice;
|
||||
XAUDIO2_BUFFER xaudio_buffer[AUDIO_BUFFERS];
|
||||
IXAudio2SourceVoice* source_voice;
|
||||
XAudio2DriverVoiceCallback* voice_callback;
|
||||
|
||||
public:
|
||||
|
||||
const char* get_name() const;
|
||||
|
||||
virtual Error init();
|
||||
virtual void start();
|
||||
virtual int get_mix_rate() const;
|
||||
virtual OutputFormat get_output_format() const;
|
||||
virtual float get_latency();
|
||||
virtual void lock();
|
||||
virtual void unlock();
|
||||
virtual void finish();
|
||||
|
||||
AudioDriverWinRT();
|
||||
~AudioDriverWinRT();
|
||||
};
|
||||
|
||||
#endif
|
|
@ -1,9 +1,8 @@
|
|||
|
||||
|
||||
import os
|
||||
|
||||
import sys
|
||||
import string
|
||||
import methods
|
||||
|
||||
|
||||
def is_active():
|
||||
|
@ -15,145 +14,156 @@ def get_name():
|
|||
|
||||
|
||||
def can_build():
|
||||
if (os.name == "nt"):
|
||||
# building natively on windows!
|
||||
if (os.name=="nt"):
|
||||
#building natively on windows!
|
||||
if (os.getenv("VSINSTALLDIR")):
|
||||
|
||||
if (os.getenv("ANGLE_SRC_PATH") == None):
|
||||
return False
|
||||
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def get_opts():
|
||||
return []
|
||||
|
||||
|
||||
def get_flags():
|
||||
|
||||
return []
|
||||
return [
|
||||
('tools', 'no'),
|
||||
('openssl', 'builtin'),
|
||||
]
|
||||
|
||||
|
||||
def configure(env):
|
||||
|
||||
env.Append(CPPPATH=['#platform/winrt', '#platform/winrt/include'])
|
||||
if(env["bits"] != "default"):
|
||||
print "Error: bits argument is disabled for MSVC"
|
||||
print ("Bits argument is not supported for MSVC compilation. Architecture depends on the Native/Cross Compile Tools Prompt/Developer Console (or Visual Studio settings)"
|
||||
+" that is being used to run SCons. As a consequence, bits argument is disabled. Run scons again without bits argument (example: scons p=winrt) and SCons will attempt to detect what MSVC compiler"
|
||||
+" will be executed and inform you.")
|
||||
sys.exit()
|
||||
|
||||
arch = ""
|
||||
env['ENV'] = os.environ;
|
||||
|
||||
if os.getenv('PLATFORM') == "ARM":
|
||||
# ANGLE
|
||||
angle_root = os.getenv("ANGLE_SRC_PATH")
|
||||
env.Append(CPPPATH=[angle_root + '/include'])
|
||||
jobs = str(env.GetOption("num_jobs"))
|
||||
angle_build_cmd = "msbuild.exe " + angle_root + "/winrt/10/src/angle.sln /nologo /v:m /m:" + jobs + " /p:Configuration=Release /p:Platform="
|
||||
|
||||
# compiler commandline
|
||||
# debug: /Yu"pch.h" /MP /GS /analyze- /W3 /wd"4453" /wd"28204" /Zc:wchar_t /I"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\App2\App2.WindowsPhone\" /I"Generated Files\" /I"ARM\Debug\" /I"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\App2\App2.Shared\" /ZW:nostdlib /Zi /Gm- /Od /sdl /Fd"ARM\Debug\vc120.pdb" /fp:precise /D "PSAPI_VERSION=2" /D "WINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP" /D "_UITHREADCTXT_SUPPORT=0" /D "_UNICODE" /D "UNICODE" /D "_DEBUG" /errorReport:prompt /WX- /Zc:forScope /RTC1 /ZW /Gd /Oy- /MDd /Fa"ARM\Debug\" /EHsc /nologo /Fo"ARM\Debug\" /Fp"ARM\Debug\App2.WindowsPhone.pch"
|
||||
# release: /Yu"pch.h" /MP /GS /GL /analyze- /W3 /wd"4453" /wd"28204" /Gy /Zc:wchar_t /I"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\App2\App2.WindowsPhone\" /I"Generated Files\" /I"ARM\Release\" /I"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\App2\App2.Shared\" /ZW:nostdlib /Zi /Gm- /O2 /sdl /Fd"ARM\Release\vc120.pdb" /fp:precise /D "PSAPI_VERSION=2" /D "WINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP" /D "_UITHREADCTXT_SUPPORT=0" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /ZW /Gd /Oy- /Oi /MD /Fa"ARM\Release\" /EHsc /nologo /Fo"ARM\Release\" /Fp"ARM\Release\App2.WindowsPhone.pch"
|
||||
if os.path.isfile(str(os.getenv("ANGLE_SRC_PATH")) + "/winrt/10/src/angle.sln"):
|
||||
env["build_angle"] = True
|
||||
|
||||
# linker commandline
|
||||
# debug: /OUT:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Debug\App2.WindowsPhone\App2.WindowsPhone.exe" /MANIFEST:NO /NXCOMPAT /PDB:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Debug\App2.WindowsPhone\App2.WindowsPhone.pdb" /DYNAMICBASE "WindowsPhoneCore.lib" "RuntimeObject.lib" "PhoneAppModelHost.lib" /DEBUG /MACHINE:ARM /NODEFAULTLIB:"kernel32.lib" /NODEFAULTLIB:"ole32.lib" /WINMD /APPCONTAINER /INCREMENTAL /PGD:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Debug\App2.WindowsPhone\App2.WindowsPhone.pgd" /WINMDFILE:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Debug\App2.WindowsPhone\App2.winmd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:NO /ManifestFile:"ARM\Debug\App2.WindowsPhone.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /TLBID:1
|
||||
# release: /OUT:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Release\App2.WindowsPhone\App2.WindowsPhone.exe" /MANIFEST:NO /LTCG /NXCOMPAT /PDB:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Release\App2.WindowsPhone\App2.WindowsPhone.pdb" /DYNAMICBASE "WindowsPhoneCore.lib" "RuntimeObject.lib" "PhoneAppModelHost.lib" /DEBUG /MACHINE:ARM /NODEFAULTLIB:"kernel32.lib" /NODEFAULTLIB:"ole32.lib" /WINMD /APPCONTAINER /OPT:REF /PGD:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Release\App2.WindowsPhone\App2.WindowsPhone.pgd" /WINMDFILE:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Release\App2.WindowsPhone\App2.winmd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:NO /ManifestFile:"ARM\Release\App2.WindowsPhone.exe.intermediate.manifest" /OPT:ICF /ERRORREPORT:PROMPT /NOLOGO /TLBID:1
|
||||
if os.getenv('Platform') == "ARM":
|
||||
|
||||
arch = "arm"
|
||||
print "Compiled program architecture will be an ARM executable. (forcing bits=32)."
|
||||
|
||||
env.Append(LINKFLAGS=['/INCREMENTAL:NO', '/MANIFEST:NO', '/NXCOMPAT', '/DYNAMICBASE', "WindowsPhoneCore.lib", "RuntimeObject.lib", "PhoneAppModelHost.lib", "/DEBUG", "/MACHINE:ARM", '/NODEFAULTLIB:"kernel32.lib"', '/NODEFAULTLIB:"ole32.lib"', '/WINMD', '/APPCONTAINER', '/MANIFESTUAC:NO', '/ERRORREPORT:PROMPT', '/NOLOGO', '/TLBID:1'])
|
||||
env.Append(LIBPATH=['#platform/winrt/ARM/lib'])
|
||||
arch="arm"
|
||||
env["bits"]="32"
|
||||
env.Append(LINKFLAGS=['/MACHINE:ARM'])
|
||||
env.Append(LIBPATH=[os.environ['VCINSTALLDIR'] + 'lib/store/arm'])
|
||||
|
||||
env.Append(CCFLAGS=string.split('/MP /GS /wd"4453" /wd"28204" /analyze- /Zc:wchar_t /Zi /Gm- /Od /fp:precise /fp:precise /D "PSAPI_VERSION=2" /D "WINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP" /DWINDOWSPHONE_ENABLED /D "_UITHREADCTXT_SUPPORT=0" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /Gd /Oy- /Oi /MD /RTC1 /Gd /EHsc /nologo'))
|
||||
env.Append(CXXFLAGS=string.split('/ZW'))
|
||||
angle_build_cmd += "ARM"
|
||||
|
||||
if (env["target"] == "release"):
|
||||
|
||||
env.Append(CCFLAGS=['/O2'])
|
||||
env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS'])
|
||||
|
||||
elif (env["target"] == "test"):
|
||||
|
||||
env.Append(CCFLAGS=['/O2', '/DDEBUG_ENABLED', '/DD3D_DEBUG_INFO'])
|
||||
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
|
||||
|
||||
elif (env["target"] == "debug"):
|
||||
|
||||
env.Append(CCFLAGS=['/Zi', '/DDEBUG_ENABLED', '/DD3D_DEBUG_INFO'])
|
||||
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
|
||||
env.Append(LINKFLAGS=['/DEBUG', '/D_DEBUG'])
|
||||
|
||||
elif (env["target"] == "profile"):
|
||||
|
||||
env.Append(CCFLAGS=['-g', '-pg'])
|
||||
env.Append(LINKFLAGS=['-pg'])
|
||||
|
||||
env['ENV'] = os.environ
|
||||
# fix environment for windows phone 8.1
|
||||
env['ENV']['WINDOWSPHONEKITDIR'] = env['ENV']['WINDOWSPHONEKITDIR'].replace("8.0", "8.1") # wtf
|
||||
env['ENV']['INCLUDE'] = env['ENV']['INCLUDE'].replace("8.0", "8.1")
|
||||
env['ENV']['LIB'] = env['ENV']['LIB'].replace("8.0", "8.1")
|
||||
env['ENV']['PATH'] = env['ENV']['PATH'].replace("8.0", "8.1")
|
||||
env['ENV']['LIBPATH'] = env['ENV']['LIBPATH'].replace("8.0\\Windows Metadata", "8.1\\References\\CommonConfiguration\\Neutral")
|
||||
env.Append(LIBPATH=[angle_root + '/winrt/10/src/Release_ARM/lib'])
|
||||
|
||||
else:
|
||||
|
||||
arch = "x64"
|
||||
env.Append(LINKFLAGS=['/MANIFEST:NO', '/NXCOMPAT', '/DYNAMICBASE', "kernel32.lib", '/MACHINE:X64', '/WINMD', '/APPCONTAINER', '/MANIFESTUAC:NO', '/ERRORREPORT:PROMPT', '/NOLOGO', '/TLBID:1'])
|
||||
compiler_version_str = methods.detect_visual_c_compiler_version(env['ENV'])
|
||||
|
||||
env.Append(LIBPATH=['#platform/winrt/x64/lib'])
|
||||
if(compiler_version_str == "amd64" or compiler_version_str == "x86_amd64"):
|
||||
env["bits"]="64"
|
||||
print "Compiled program architecture will be a x64 executable (forcing bits=64)."
|
||||
elif (compiler_version_str=="x86" or compiler_version_str == "amd64_x86"):
|
||||
env["bits"]="32"
|
||||
print "Compiled program architecture will be a x86 executable. (forcing bits=32)."
|
||||
else:
|
||||
print "Failed to detect MSVC compiler architecture version... Defaulting to 32bit executable settings (forcing bits=32). Compilation attempt will continue, but SCons can not detect for what architecture this build is compiled for. You should check your settings/compilation setup."
|
||||
env["bits"]="32"
|
||||
|
||||
if (env["target"] == "release"):
|
||||
if (env["bits"] == "32"):
|
||||
arch = "x86"
|
||||
|
||||
env.Append(CCFLAGS=['/O2'])
|
||||
env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS'])
|
||||
env.Append(LINKFLAGS=['/ENTRY:mainCRTStartup'])
|
||||
angle_build_cmd += "Win32"
|
||||
|
||||
elif (env["target"] == "test"):
|
||||
env.Append(CPPFLAGS=['/DPNG_ABORT=abort'])
|
||||
env.Append(LINKFLAGS=['/MACHINE:X86'])
|
||||
env.Append(LIBPATH=[os.environ['VCINSTALLDIR'] + 'lib/store'])
|
||||
env.Append(LIBPATH=[angle_root + '/winrt/10/src/Release_Win32/lib'])
|
||||
|
||||
env.Append(CCFLAGS=['/O2', '/DDEBUG_ENABLED', '/DD3D_DEBUG_INFO'])
|
||||
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
|
||||
else:
|
||||
arch = "x64"
|
||||
|
||||
elif (env["target"] == "debug"):
|
||||
angle_build_cmd += "x64"
|
||||
|
||||
env.Append(CCFLAGS=['/Zi', '/DDEBUG_ENABLED', '/DD3D_DEBUG_INFO'])
|
||||
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
|
||||
env.Append(LINKFLAGS=['/DEBUG', '/D_DEBUG'])
|
||||
env.Append(LINKFLAGS=['/MACHINE:X64'])
|
||||
env.Append(LIBPATH=[os.environ['VCINSTALLDIR'] + 'lib/store/amd64'])
|
||||
env.Append(LIBPATH=[angle_root + '/winrt/10/src/Release_x64/lib'])
|
||||
|
||||
elif (env["target"] == "profile"):
|
||||
env.Append(CPPPATH=['#platform/winrt','#drivers/windows'])
|
||||
env.Append(LINKFLAGS=['/MANIFEST:NO', '/NXCOMPAT', '/DYNAMICBASE', '/WINMD', '/APPCONTAINER', '/ERRORREPORT:PROMPT', '/NOLOGO', '/TLBID:1', '/NODEFAULTLIB:"kernel32.lib"', '/NODEFAULTLIB:"ole32.lib"'])
|
||||
env.Append(CPPFLAGS=['/D','__WRL_NO_DEFAULT_LIB__','/D','WIN32'])
|
||||
env.Append(CPPFLAGS=['/FU', os.environ['VCINSTALLDIR'] + 'lib/store/references/platform.winmd'])
|
||||
env.Append(CPPFLAGS=['/AI', os.environ['VCINSTALLDIR'] + 'lib/store/references'])
|
||||
|
||||
env.Append(CCFLAGS=['-g', '-pg'])
|
||||
env.Append(LINKFLAGS=['-pg'])
|
||||
env.Append(LIBPATH=[os.environ['VCINSTALLDIR'] + 'lib/store/references'])
|
||||
|
||||
env.Append(CCFLAGS=string.split('/MP /GS /wd"4453" /wd"28204" /Zc:wchar_t /Gm- /Od /fp:precise /D "_UNICODE" /D "UNICODE" /D "WINAPI_FAMILY=WINAPI_FAMILY_APP" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /MDd /EHsc /nologo'))
|
||||
env.Append(CXXFLAGS=string.split('/ZW'))
|
||||
env.Append(CCFLAGS=['/AI', os.environ['VCINSTALLDIR'] + '\\vcpackages', '/AI', os.environ['WINDOWSSDKDIR'] + '\\References\\CommonConfiguration\\Neutral'])
|
||||
env.Append(CCFLAGS=['/DWINAPI_FAMILY=WINAPI_FAMILY_APP', '/D_WIN32_WINNT=0x0603', '/DNTDDI_VERSION=0x06030000'])
|
||||
if (env["target"]=="release"):
|
||||
|
||||
env['ENV'] = os.environ
|
||||
env.Append(CPPFLAGS=['/O2', '/GL'])
|
||||
env.Append(CPPFLAGS=['/MD'])
|
||||
env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS', '/LTCG'])
|
||||
|
||||
elif (env["target"]=="release_debug"):
|
||||
|
||||
env.Append(CCFLAGS=['/O2','/Zi','/DDEBUG_ENABLED'])
|
||||
env.Append(CPPFLAGS=['/MD'])
|
||||
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
|
||||
|
||||
elif (env["target"]=="debug"):
|
||||
|
||||
env.Append(CCFLAGS=['/Zi','/DDEBUG_ENABLED','/DDEBUG_MEMORY_ENABLED'])
|
||||
env.Append(CPPFLAGS=['/MDd'])
|
||||
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
|
||||
env.Append(LINKFLAGS=['/DEBUG'])
|
||||
|
||||
|
||||
env.Append(CCFLAGS=string.split('/FS /MP /GS /wd"4453" /wd"28204" /wd"4291" /Zc:wchar_t /Gm- /fp:precise /D "_UNICODE" /D "UNICODE" /D "WINAPI_FAMILY=WINAPI_FAMILY_APP" /errorReport:prompt /WX- /Zc:forScope /Gd /EHsc /nologo'))
|
||||
env.Append(CXXFLAGS=string.split('/ZW /FS'))
|
||||
env.Append(CCFLAGS=['/AI', os.environ['VCINSTALLDIR']+'\\vcpackages', '/AI', os.environ['WINDOWSSDKDIR']+'\\References\\CommonConfiguration\\Neutral'])
|
||||
|
||||
env['ENV'] = os.environ
|
||||
|
||||
env["PROGSUFFIX"] = "." + arch + env["PROGSUFFIX"]
|
||||
env["OBJSUFFIX"] = "." + arch + env["OBJSUFFIX"]
|
||||
env["LIBSUFFIX"] = "." + arch + env["LIBSUFFIX"]
|
||||
|
||||
#env.Append(CCFLAGS=['/Gd','/GR','/nologo', '/EHsc'])
|
||||
#env.Append(CXXFLAGS=['/TP', '/ZW'])
|
||||
#env.Append(CPPFLAGS=['/DMSVC', '/GR', ])
|
||||
# env.Append(CCFLAGS=['/I'+os.getenv("WindowsSdkDir")+"/Include"])
|
||||
env.Append(CCFLAGS=['/DWINRT_ENABLED'])
|
||||
env.Append(CCFLAGS=['/DWINDOWS_ENABLED'])
|
||||
env.Append(CCFLAGS=['/DRTAUDIO_ENABLED'])
|
||||
# env.Append(CCFLAGS=['/DWIN32'])
|
||||
env.Append(CCFLAGS=['/DTYPED_METHOD_BIND'])
|
||||
|
||||
env.Append(CCFLAGS=['/DGLES2_ENABLED'])
|
||||
# env.Append(CCFLAGS=['/DGLES1_ENABLED'])
|
||||
|
||||
winver = "0x0602" # Windows 8 is the minimum target for UWP build
|
||||
env.Append(CCFLAGS=['/DWINVER=%s' % winver, '/D_WIN32_WINNT=%s' % winver])
|
||||
env.Append(CCFLAGS=['/DGLES2_ENABLED','/DGL_GLEXT_PROTOTYPES','/DEGL_EGLEXT_PROTOTYPES','/DANGLE_ENABLED'])
|
||||
|
||||
LIBS = [
|
||||
#'winmm',
|
||||
'xaudio2',
|
||||
'WindowsApp',
|
||||
'mincore',
|
||||
'ws2_32',
|
||||
'libANGLE',
|
||||
'libEGL',
|
||||
'libGLESv2',
|
||||
'libANGLE',
|
||||
#'kernel32','ole32','user32', 'advapi32'
|
||||
]
|
||||
env.Append(LINKFLAGS=[p + ".lib" for p in LIBS])
|
||||
]
|
||||
env.Append(LINKFLAGS=[p+".lib" for p in LIBS])
|
||||
|
||||
import methods
|
||||
env.Append(BUILDERS={'GLSL120': env.Builder(action=methods.build_legacygl_headers, suffix='glsl.h', src_suffix='.glsl')})
|
||||
env.Append(BUILDERS={'GLSL': env.Builder(action=methods.build_glsl_headers, suffix='glsl.h', src_suffix='.glsl')})
|
||||
env.Append(BUILDERS={'HLSL9': env.Builder(action=methods.build_hlsl_dx9_headers, suffix='hlsl.h', src_suffix='.hlsl')})
|
||||
env.Append(BUILDERS={'GLSL120GLES': env.Builder(action=methods.build_gles2_headers, suffix='glsl.h', src_suffix='.glsl')})
|
||||
# Incremental linking fix
|
||||
env['BUILDERS']['ProgramOriginal'] = env['BUILDERS']['Program']
|
||||
env['BUILDERS']['Program'] = methods.precious_program
|
||||
|
||||
env.Append( BUILDERS = { 'ANGLE' : env.Builder(action = angle_build_cmd) } )
|
||||
|
||||
#/c/Program Files (x86)/Windows Phone Kits/8.1/lib/ARM/WindowsPhoneCore.lib
|
||||
env.Append( BUILDERS = { 'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
|
||||
env.Append( BUILDERS = { 'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
|
||||
env.Append( BUILDERS = { 'HLSL9' : env.Builder(action = methods.build_hlsl_dx9_headers, suffix = 'hlsl.h',src_suffix = '.hlsl') } )
|
||||
env.Append( BUILDERS = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
/*************************************************************************/
|
||||
/* export.h */
|
||||
/*************************************************************************/
|
||||
/* This file is part of: */
|
||||
/* GODOT ENGINE */
|
||||
/* http://www.godotengine.org */
|
||||
/*************************************************************************/
|
||||
/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
/* "Software"), to deal in the Software without restriction, including */
|
||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||
/* the following conditions: */
|
||||
/* */
|
||||
/* The above copyright notice and this permission notice shall be */
|
||||
/* included in all copies or substantial portions of the Software. */
|
||||
/* */
|
||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
|
||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/*************************************************************************/
|
||||
void register_winrt_exporter();
|
|
@ -102,12 +102,25 @@ Error ContextEGL::initialize() {
|
|||
try {
|
||||
|
||||
const EGLint displayAttributes[] =
|
||||
{
|
||||
EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
|
||||
EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE, 9,
|
||||
EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE, 3,
|
||||
EGL_NONE,
|
||||
};
|
||||
{
|
||||
/*EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
|
||||
EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE, 9,
|
||||
EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE, 3,
|
||||
EGL_NONE,*/
|
||||
// These are the default display attributes, used to request ANGLE's D3D11 renderer.
|
||||
// eglInitialize will only succeed with these attributes if the hardware supports D3D11 Feature Level 10_0+.
|
||||
EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
|
||||
|
||||
// EGL_ANGLE_DISPLAY_ALLOW_RENDER_TO_BACK_BUFFER is an optimization that can have large performance benefits on mobile devices.
|
||||
// Its syntax is subject to change, though. Please update your Visual Studio templates if you experience compilation issues with it.
|
||||
//EGL_ANGLE_DISPLAY_ALLOW_RENDER_TO_BACK_BUFFER, EGL_TRUE,
|
||||
|
||||
// EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE is an option that enables ANGLE to automatically call
|
||||
// the IDXGIDevice3::Trim method on behalf of the application when it gets suspended.
|
||||
// Calling IDXGIDevice3::Trim when an application is suspended is a Windows Store application certification requirement.
|
||||
EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE, EGL_TRUE,
|
||||
EGL_NONE,
|
||||
};
|
||||
|
||||
PFNEGLGETPLATFORMDISPLAYEXTPROC eglGetPlatformDisplayEXT = reinterpret_cast<PFNEGLGETPLATFORMDISPLAYEXTPROC>(eglGetProcAddress("eglGetPlatformDisplayEXT"));
|
||||
|
||||
|
|
|
@ -50,6 +50,8 @@ class ContextEGL : public ContextGL {
|
|||
EGLint width;
|
||||
EGLint height;
|
||||
|
||||
bool vsync;
|
||||
|
||||
public:
|
||||
virtual void release_current();
|
||||
|
||||
|
@ -59,6 +61,9 @@ public:
|
|||
virtual int get_window_height();
|
||||
virtual void swap_buffers();
|
||||
|
||||
void set_use_vsync(bool use) { vsync = use; }
|
||||
bool is_using_vsync() const { return vsync; }
|
||||
|
||||
virtual Error initialize();
|
||||
void reset();
|
||||
|
||||
|
|
|
@ -1,298 +0,0 @@
|
|||
#ifndef __egl_h_
|
||||
#define __egl_h_ 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2013-2014 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a
|
||||
** copy of this software and/or associated documentation files (the
|
||||
** "Materials"), to deal in the Materials without restriction, including
|
||||
** without limitation the rights to use, copy, modify, merge, publish,
|
||||
** distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
** permit persons to whom the Materials are furnished to do so, subject to
|
||||
** the following conditions:
|
||||
**
|
||||
** The above copyright notice and this permission notice shall be included
|
||||
** in all copies or substantial portions of the Materials.
|
||||
**
|
||||
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
*/
|
||||
/*
|
||||
** This header is generated from the Khronos OpenGL / OpenGL ES XML
|
||||
** API Registry. The current version of the Registry, generator scripts
|
||||
** used to make the header, and the header can be found at
|
||||
** http://www.opengl.org/registry/
|
||||
**
|
||||
** Khronos $Revision: 27018 $ on $Date: 2014-06-10 08:06:12 -0700 (Tue, 10 Jun 2014) $
|
||||
*/
|
||||
|
||||
#include <EGL/eglplatform.h>
|
||||
|
||||
/* Generated on date 20140610 */
|
||||
|
||||
/* Generated C header for:
|
||||
* API: egl
|
||||
* Versions considered: .*
|
||||
* Versions emitted: .*
|
||||
* Default extensions included: None
|
||||
* Additional extensions included: _nomatch_^
|
||||
* Extensions removed: _nomatch_^
|
||||
*/
|
||||
|
||||
#ifndef EGL_VERSION_1_0
|
||||
#define EGL_VERSION_1_0 1
|
||||
typedef unsigned int EGLBoolean;
|
||||
typedef void *EGLDisplay;
|
||||
#include <KHR/khrplatform.h>
|
||||
#include <EGL/eglplatform.h>
|
||||
typedef void *EGLConfig;
|
||||
typedef void *EGLSurface;
|
||||
typedef void *EGLContext;
|
||||
typedef void (*__eglMustCastToProperFunctionPointerType)(void);
|
||||
#define EGL_ALPHA_SIZE 0x3021
|
||||
#define EGL_BAD_ACCESS 0x3002
|
||||
#define EGL_BAD_ALLOC 0x3003
|
||||
#define EGL_BAD_ATTRIBUTE 0x3004
|
||||
#define EGL_BAD_CONFIG 0x3005
|
||||
#define EGL_BAD_CONTEXT 0x3006
|
||||
#define EGL_BAD_CURRENT_SURFACE 0x3007
|
||||
#define EGL_BAD_DISPLAY 0x3008
|
||||
#define EGL_BAD_MATCH 0x3009
|
||||
#define EGL_BAD_NATIVE_PIXMAP 0x300A
|
||||
#define EGL_BAD_NATIVE_WINDOW 0x300B
|
||||
#define EGL_BAD_PARAMETER 0x300C
|
||||
#define EGL_BAD_SURFACE 0x300D
|
||||
#define EGL_BLUE_SIZE 0x3022
|
||||
#define EGL_BUFFER_SIZE 0x3020
|
||||
#define EGL_CONFIG_CAVEAT 0x3027
|
||||
#define EGL_CONFIG_ID 0x3028
|
||||
#define EGL_CORE_NATIVE_ENGINE 0x305B
|
||||
#define EGL_DEPTH_SIZE 0x3025
|
||||
#define EGL_DONT_CARE ((EGLint)-1)
|
||||
#define EGL_DRAW 0x3059
|
||||
#define EGL_EXTENSIONS 0x3055
|
||||
#define EGL_FALSE 0
|
||||
#define EGL_GREEN_SIZE 0x3023
|
||||
#define EGL_HEIGHT 0x3056
|
||||
#define EGL_LARGEST_PBUFFER 0x3058
|
||||
#define EGL_LEVEL 0x3029
|
||||
#define EGL_MAX_PBUFFER_HEIGHT 0x302A
|
||||
#define EGL_MAX_PBUFFER_PIXELS 0x302B
|
||||
#define EGL_MAX_PBUFFER_WIDTH 0x302C
|
||||
#define EGL_NATIVE_RENDERABLE 0x302D
|
||||
#define EGL_NATIVE_VISUAL_ID 0x302E
|
||||
#define EGL_NATIVE_VISUAL_TYPE 0x302F
|
||||
#define EGL_NONE 0x3038
|
||||
#define EGL_NON_CONFORMANT_CONFIG 0x3051
|
||||
#define EGL_NOT_INITIALIZED 0x3001
|
||||
#define EGL_NO_CONTEXT ((EGLContext)0)
|
||||
#define EGL_NO_DISPLAY ((EGLDisplay)0)
|
||||
#define EGL_NO_SURFACE ((EGLSurface)0)
|
||||
#define EGL_PBUFFER_BIT 0x0001
|
||||
#define EGL_PIXMAP_BIT 0x0002
|
||||
#define EGL_READ 0x305A
|
||||
#define EGL_RED_SIZE 0x3024
|
||||
#define EGL_SAMPLES 0x3031
|
||||
#define EGL_SAMPLE_BUFFERS 0x3032
|
||||
#define EGL_SLOW_CONFIG 0x3050
|
||||
#define EGL_STENCIL_SIZE 0x3026
|
||||
#define EGL_SUCCESS 0x3000
|
||||
#define EGL_SURFACE_TYPE 0x3033
|
||||
#define EGL_TRANSPARENT_BLUE_VALUE 0x3035
|
||||
#define EGL_TRANSPARENT_GREEN_VALUE 0x3036
|
||||
#define EGL_TRANSPARENT_RED_VALUE 0x3037
|
||||
#define EGL_TRANSPARENT_RGB 0x3052
|
||||
#define EGL_TRANSPARENT_TYPE 0x3034
|
||||
#define EGL_TRUE 1
|
||||
#define EGL_VENDOR 0x3053
|
||||
#define EGL_VERSION 0x3054
|
||||
#define EGL_WIDTH 0x3057
|
||||
#define EGL_WINDOW_BIT 0x0004
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
|
||||
EGLAPI EGLContext EGLAPIENTRY eglCreateContext (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);
|
||||
EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
|
||||
EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list);
|
||||
EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext (EGLDisplay dpy, EGLContext ctx);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface (EGLDisplay dpy, EGLSurface surface);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
|
||||
EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay (void);
|
||||
EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface (EGLint readdraw);
|
||||
EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay (EGLNativeDisplayType display_id);
|
||||
EGLAPI EGLint EGLAPIENTRY eglGetError (void);
|
||||
EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress (const char *procname);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglInitialize (EGLDisplay dpy, EGLint *major, EGLint *minor);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
|
||||
EGLAPI const char *EGLAPIENTRY eglQueryString (EGLDisplay dpy, EGLint name);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers (EGLDisplay dpy, EGLSurface surface);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglTerminate (EGLDisplay dpy);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL (void);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative (EGLint engine);
|
||||
#endif /* EGL_VERSION_1_0 */
|
||||
|
||||
#ifndef EGL_VERSION_1_1
|
||||
#define EGL_VERSION_1_1 1
|
||||
#define EGL_BACK_BUFFER 0x3084
|
||||
#define EGL_BIND_TO_TEXTURE_RGB 0x3039
|
||||
#define EGL_BIND_TO_TEXTURE_RGBA 0x303A
|
||||
#define EGL_CONTEXT_LOST 0x300E
|
||||
#define EGL_MIN_SWAP_INTERVAL 0x303B
|
||||
#define EGL_MAX_SWAP_INTERVAL 0x303C
|
||||
#define EGL_MIPMAP_TEXTURE 0x3082
|
||||
#define EGL_MIPMAP_LEVEL 0x3083
|
||||
#define EGL_NO_TEXTURE 0x305C
|
||||
#define EGL_TEXTURE_2D 0x305F
|
||||
#define EGL_TEXTURE_FORMAT 0x3080
|
||||
#define EGL_TEXTURE_RGB 0x305D
|
||||
#define EGL_TEXTURE_RGBA 0x305E
|
||||
#define EGL_TEXTURE_TARGET 0x3081
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval (EGLDisplay dpy, EGLint interval);
|
||||
#endif /* EGL_VERSION_1_1 */
|
||||
|
||||
#ifndef EGL_VERSION_1_2
|
||||
#define EGL_VERSION_1_2 1
|
||||
typedef unsigned int EGLenum;
|
||||
typedef void *EGLClientBuffer;
|
||||
#define EGL_ALPHA_FORMAT 0x3088
|
||||
#define EGL_ALPHA_FORMAT_NONPRE 0x308B
|
||||
#define EGL_ALPHA_FORMAT_PRE 0x308C
|
||||
#define EGL_ALPHA_MASK_SIZE 0x303E
|
||||
#define EGL_BUFFER_PRESERVED 0x3094
|
||||
#define EGL_BUFFER_DESTROYED 0x3095
|
||||
#define EGL_CLIENT_APIS 0x308D
|
||||
#define EGL_COLORSPACE 0x3087
|
||||
#define EGL_COLORSPACE_sRGB 0x3089
|
||||
#define EGL_COLORSPACE_LINEAR 0x308A
|
||||
#define EGL_COLOR_BUFFER_TYPE 0x303F
|
||||
#define EGL_CONTEXT_CLIENT_TYPE 0x3097
|
||||
#define EGL_DISPLAY_SCALING 10000
|
||||
#define EGL_HORIZONTAL_RESOLUTION 0x3090
|
||||
#define EGL_LUMINANCE_BUFFER 0x308F
|
||||
#define EGL_LUMINANCE_SIZE 0x303D
|
||||
#define EGL_OPENGL_ES_BIT 0x0001
|
||||
#define EGL_OPENVG_BIT 0x0002
|
||||
#define EGL_OPENGL_ES_API 0x30A0
|
||||
#define EGL_OPENVG_API 0x30A1
|
||||
#define EGL_OPENVG_IMAGE 0x3096
|
||||
#define EGL_PIXEL_ASPECT_RATIO 0x3092
|
||||
#define EGL_RENDERABLE_TYPE 0x3040
|
||||
#define EGL_RENDER_BUFFER 0x3086
|
||||
#define EGL_RGB_BUFFER 0x308E
|
||||
#define EGL_SINGLE_BUFFER 0x3085
|
||||
#define EGL_SWAP_BEHAVIOR 0x3093
|
||||
#define EGL_UNKNOWN ((EGLint)-1)
|
||||
#define EGL_VERTICAL_RESOLUTION 0x3091
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI (EGLenum api);
|
||||
EGLAPI EGLenum EGLAPIENTRY eglQueryAPI (void);
|
||||
EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread (void);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient (void);
|
||||
#endif /* EGL_VERSION_1_2 */
|
||||
|
||||
#ifndef EGL_VERSION_1_3
|
||||
#define EGL_VERSION_1_3 1
|
||||
#define EGL_CONFORMANT 0x3042
|
||||
#define EGL_CONTEXT_CLIENT_VERSION 0x3098
|
||||
#define EGL_MATCH_NATIVE_PIXMAP 0x3041
|
||||
#define EGL_OPENGL_ES2_BIT 0x0004
|
||||
#define EGL_VG_ALPHA_FORMAT 0x3088
|
||||
#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B
|
||||
#define EGL_VG_ALPHA_FORMAT_PRE 0x308C
|
||||
#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040
|
||||
#define EGL_VG_COLORSPACE 0x3087
|
||||
#define EGL_VG_COLORSPACE_sRGB 0x3089
|
||||
#define EGL_VG_COLORSPACE_LINEAR 0x308A
|
||||
#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020
|
||||
#endif /* EGL_VERSION_1_3 */
|
||||
|
||||
#ifndef EGL_VERSION_1_4
|
||||
#define EGL_VERSION_1_4 1
|
||||
#define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)0)
|
||||
#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200
|
||||
#define EGL_MULTISAMPLE_RESOLVE 0x3099
|
||||
#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A
|
||||
#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B
|
||||
#define EGL_OPENGL_API 0x30A2
|
||||
#define EGL_OPENGL_BIT 0x0008
|
||||
#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400
|
||||
EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext (void);
|
||||
#endif /* EGL_VERSION_1_4 */
|
||||
|
||||
#ifndef EGL_VERSION_1_5
|
||||
#define EGL_VERSION_1_5 1
|
||||
typedef void *EGLSync;
|
||||
typedef intptr_t EGLAttrib;
|
||||
typedef khronos_utime_nanoseconds_t EGLTime;
|
||||
#define EGL_CONTEXT_MAJOR_VERSION 0x3098
|
||||
#define EGL_CONTEXT_MINOR_VERSION 0x30FB
|
||||
#define EGL_CONTEXT_OPENGL_PROFILE_MASK 0x30FD
|
||||
#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY 0x31BD
|
||||
#define EGL_NO_RESET_NOTIFICATION 0x31BE
|
||||
#define EGL_LOSE_CONTEXT_ON_RESET 0x31BF
|
||||
#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT 0x00000001
|
||||
#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT 0x00000002
|
||||
#define EGL_CONTEXT_OPENGL_DEBUG 0x31B0
|
||||
#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE 0x31B1
|
||||
#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS 0x31B2
|
||||
#define EGL_OPENGL_ES3_BIT 0x00000040
|
||||
#define EGL_CL_EVENT_HANDLE 0x309C
|
||||
#define EGL_SYNC_CL_EVENT 0x30FE
|
||||
#define EGL_SYNC_CL_EVENT_COMPLETE 0x30FF
|
||||
#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE 0x30F0
|
||||
#define EGL_SYNC_TYPE 0x30F7
|
||||
#define EGL_SYNC_STATUS 0x30F1
|
||||
#define EGL_SYNC_CONDITION 0x30F8
|
||||
#define EGL_SIGNALED 0x30F2
|
||||
#define EGL_UNSIGNALED 0x30F3
|
||||
#define EGL_SYNC_FLUSH_COMMANDS_BIT 0x0001
|
||||
#define EGL_FOREVER 0xFFFFFFFFFFFFFFFFull
|
||||
#define EGL_TIMEOUT_EXPIRED 0x30F5
|
||||
#define EGL_CONDITION_SATISFIED 0x30F6
|
||||
#define EGL_NO_SYNC ((EGLSync)0)
|
||||
#define EGL_SYNC_FENCE 0x30F9
|
||||
#define EGL_GL_COLORSPACE 0x309D
|
||||
#define EGL_GL_COLORSPACE_SRGB 0x3089
|
||||
#define EGL_GL_COLORSPACE_LINEAR 0x308A
|
||||
#define EGL_GL_RENDERBUFFER 0x30B9
|
||||
#define EGL_GL_TEXTURE_2D 0x30B1
|
||||
#define EGL_GL_TEXTURE_LEVEL 0x30BC
|
||||
#define EGL_GL_TEXTURE_3D 0x30B2
|
||||
#define EGL_GL_TEXTURE_ZOFFSET 0x30BD
|
||||
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x30B3
|
||||
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x30B4
|
||||
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x30B5
|
||||
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x30B6
|
||||
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x30B7
|
||||
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x30B8
|
||||
EGLAPI EGLSync EGLAPIENTRY eglCreateSync (EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglDestroySync (EGLDisplay dpy, EGLSync sync);
|
||||
EGLAPI EGLint EGLAPIENTRY eglClientWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttrib (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value);
|
||||
EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplay (EGLenum platform, void *native_display, const EGLAttrib *attrib_list);
|
||||
EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurface (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list);
|
||||
EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurface (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags);
|
||||
#endif /* EGL_VERSION_1_5 */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -1,766 +0,0 @@
|
|||
#ifndef __eglext_h_
|
||||
#define __eglext_h_ 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2013-2014 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a
|
||||
** copy of this software and/or associated documentation files (the
|
||||
** "Materials"), to deal in the Materials without restriction, including
|
||||
** without limitation the rights to use, copy, modify, merge, publish,
|
||||
** distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
** permit persons to whom the Materials are furnished to do so, subject to
|
||||
** the following conditions:
|
||||
**
|
||||
** The above copyright notice and this permission notice shall be included
|
||||
** in all copies or substantial portions of the Materials.
|
||||
**
|
||||
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
*/
|
||||
/*
|
||||
** This header is generated from the Khronos OpenGL / OpenGL ES XML
|
||||
** API Registry. The current version of the Registry, generator scripts
|
||||
** used to make the header, and the header can be found at
|
||||
** http://www.opengl.org/registry/
|
||||
**
|
||||
** Khronos $Revision: 27018 $ on $Date: 2014-06-10 08:06:12 -0700 (Tue, 10 Jun 2014) $
|
||||
*/
|
||||
|
||||
#include <EGL/eglplatform.h>
|
||||
|
||||
#define EGL_EGLEXT_VERSION 20140610
|
||||
|
||||
/* Generated C header for:
|
||||
* API: egl
|
||||
* Versions considered: .*
|
||||
* Versions emitted: _nomatch_^
|
||||
* Default extensions included: egl
|
||||
* Additional extensions included: _nomatch_^
|
||||
* Extensions removed: _nomatch_^
|
||||
*/
|
||||
|
||||
#ifndef EGL_KHR_cl_event
|
||||
#define EGL_KHR_cl_event 1
|
||||
#define EGL_CL_EVENT_HANDLE_KHR 0x309C
|
||||
#define EGL_SYNC_CL_EVENT_KHR 0x30FE
|
||||
#define EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF
|
||||
#endif /* EGL_KHR_cl_event */
|
||||
|
||||
#ifndef EGL_KHR_cl_event2
|
||||
#define EGL_KHR_cl_event2 1
|
||||
typedef void *EGLSyncKHR;
|
||||
typedef intptr_t EGLAttribKHR;
|
||||
typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNC64KHRPROC) (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync64KHR (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);
|
||||
#endif
|
||||
#endif /* EGL_KHR_cl_event2 */
|
||||
|
||||
#ifndef EGL_KHR_client_get_all_proc_addresses
|
||||
#define EGL_KHR_client_get_all_proc_addresses 1
|
||||
#endif /* EGL_KHR_client_get_all_proc_addresses */
|
||||
|
||||
#ifndef EGL_KHR_config_attribs
|
||||
#define EGL_KHR_config_attribs 1
|
||||
#define EGL_CONFORMANT_KHR 0x3042
|
||||
#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020
|
||||
#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040
|
||||
#endif /* EGL_KHR_config_attribs */
|
||||
|
||||
#ifndef EGL_KHR_create_context
|
||||
#define EGL_KHR_create_context 1
|
||||
#define EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098
|
||||
#define EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB
|
||||
#define EGL_CONTEXT_FLAGS_KHR 0x30FC
|
||||
#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD
|
||||
#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD
|
||||
#define EGL_NO_RESET_NOTIFICATION_KHR 0x31BE
|
||||
#define EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF
|
||||
#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001
|
||||
#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002
|
||||
#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004
|
||||
#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001
|
||||
#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002
|
||||
#define EGL_OPENGL_ES3_BIT_KHR 0x00000040
|
||||
#endif /* EGL_KHR_create_context */
|
||||
|
||||
#ifndef EGL_KHR_fence_sync
|
||||
#define EGL_KHR_fence_sync 1
|
||||
#ifdef KHRONOS_SUPPORT_INT64
|
||||
#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0
|
||||
#define EGL_SYNC_CONDITION_KHR 0x30F8
|
||||
#define EGL_SYNC_FENCE_KHR 0x30F9
|
||||
#endif /* KHRONOS_SUPPORT_INT64 */
|
||||
#endif /* EGL_KHR_fence_sync */
|
||||
|
||||
#ifndef EGL_KHR_get_all_proc_addresses
|
||||
#define EGL_KHR_get_all_proc_addresses 1
|
||||
#endif /* EGL_KHR_get_all_proc_addresses */
|
||||
|
||||
#ifndef EGL_KHR_gl_colorspace
|
||||
#define EGL_KHR_gl_colorspace 1
|
||||
#define EGL_GL_COLORSPACE_KHR 0x309D
|
||||
#define EGL_GL_COLORSPACE_SRGB_KHR 0x3089
|
||||
#define EGL_GL_COLORSPACE_LINEAR_KHR 0x308A
|
||||
#endif /* EGL_KHR_gl_colorspace */
|
||||
|
||||
#ifndef EGL_KHR_gl_renderbuffer_image
|
||||
#define EGL_KHR_gl_renderbuffer_image 1
|
||||
#define EGL_GL_RENDERBUFFER_KHR 0x30B9
|
||||
#endif /* EGL_KHR_gl_renderbuffer_image */
|
||||
|
||||
#ifndef EGL_KHR_gl_texture_2D_image
|
||||
#define EGL_KHR_gl_texture_2D_image 1
|
||||
#define EGL_GL_TEXTURE_2D_KHR 0x30B1
|
||||
#define EGL_GL_TEXTURE_LEVEL_KHR 0x30BC
|
||||
#endif /* EGL_KHR_gl_texture_2D_image */
|
||||
|
||||
#ifndef EGL_KHR_gl_texture_3D_image
|
||||
#define EGL_KHR_gl_texture_3D_image 1
|
||||
#define EGL_GL_TEXTURE_3D_KHR 0x30B2
|
||||
#define EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD
|
||||
#endif /* EGL_KHR_gl_texture_3D_image */
|
||||
|
||||
#ifndef EGL_KHR_gl_texture_cubemap_image
|
||||
#define EGL_KHR_gl_texture_cubemap_image 1
|
||||
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3
|
||||
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4
|
||||
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5
|
||||
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6
|
||||
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7
|
||||
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8
|
||||
#endif /* EGL_KHR_gl_texture_cubemap_image */
|
||||
|
||||
#ifndef EGL_KHR_image
|
||||
#define EGL_KHR_image 1
|
||||
typedef void *EGLImageKHR;
|
||||
#define EGL_NATIVE_PIXMAP_KHR 0x30B0
|
||||
#define EGL_NO_IMAGE_KHR ((EGLImageKHR)0)
|
||||
typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image);
|
||||
#endif
|
||||
#endif /* EGL_KHR_image */
|
||||
|
||||
#ifndef EGL_KHR_image_base
|
||||
#define EGL_KHR_image_base 1
|
||||
#define EGL_IMAGE_PRESERVED_KHR 0x30D2
|
||||
#endif /* EGL_KHR_image_base */
|
||||
|
||||
#ifndef EGL_KHR_image_pixmap
|
||||
#define EGL_KHR_image_pixmap 1
|
||||
#endif /* EGL_KHR_image_pixmap */
|
||||
|
||||
#ifndef EGL_KHR_lock_surface
|
||||
#define EGL_KHR_lock_surface 1
|
||||
#define EGL_READ_SURFACE_BIT_KHR 0x0001
|
||||
#define EGL_WRITE_SURFACE_BIT_KHR 0x0002
|
||||
#define EGL_LOCK_SURFACE_BIT_KHR 0x0080
|
||||
#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
|
||||
#define EGL_MATCH_FORMAT_KHR 0x3043
|
||||
#define EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0
|
||||
#define EGL_FORMAT_RGB_565_KHR 0x30C1
|
||||
#define EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2
|
||||
#define EGL_FORMAT_RGBA_8888_KHR 0x30C3
|
||||
#define EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4
|
||||
#define EGL_LOCK_USAGE_HINT_KHR 0x30C5
|
||||
#define EGL_BITMAP_POINTER_KHR 0x30C6
|
||||
#define EGL_BITMAP_PITCH_KHR 0x30C7
|
||||
#define EGL_BITMAP_ORIGIN_KHR 0x30C8
|
||||
#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9
|
||||
#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
|
||||
#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB
|
||||
#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
|
||||
#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
|
||||
#define EGL_LOWER_LEFT_KHR 0x30CE
|
||||
#define EGL_UPPER_LEFT_KHR 0x30CF
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay dpy, EGLSurface surface);
|
||||
#endif
|
||||
#endif /* EGL_KHR_lock_surface */
|
||||
|
||||
#ifndef EGL_KHR_lock_surface2
|
||||
#define EGL_KHR_lock_surface2 1
|
||||
#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
|
||||
#endif /* EGL_KHR_lock_surface2 */
|
||||
|
||||
#ifndef EGL_KHR_lock_surface3
|
||||
#define EGL_KHR_lock_surface3 1
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACE64KHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface64KHR (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value);
|
||||
#endif
|
||||
#endif /* EGL_KHR_lock_surface3 */
|
||||
|
||||
#ifndef EGL_KHR_platform_android
|
||||
#define EGL_KHR_platform_android 1
|
||||
#define EGL_PLATFORM_ANDROID_KHR 0x3141
|
||||
#endif /* EGL_KHR_platform_android */
|
||||
|
||||
#ifndef EGL_KHR_platform_gbm
|
||||
#define EGL_KHR_platform_gbm 1
|
||||
#define EGL_PLATFORM_GBM_KHR 0x31D7
|
||||
#endif /* EGL_KHR_platform_gbm */
|
||||
|
||||
#ifndef EGL_KHR_platform_wayland
|
||||
#define EGL_KHR_platform_wayland 1
|
||||
#define EGL_PLATFORM_WAYLAND_KHR 0x31D8
|
||||
#endif /* EGL_KHR_platform_wayland */
|
||||
|
||||
#ifndef EGL_KHR_platform_x11
|
||||
#define EGL_KHR_platform_x11 1
|
||||
#define EGL_PLATFORM_X11_KHR 0x31D5
|
||||
#define EGL_PLATFORM_X11_SCREEN_KHR 0x31D6
|
||||
#endif /* EGL_KHR_platform_x11 */
|
||||
|
||||
#ifndef EGL_KHR_reusable_sync
|
||||
#define EGL_KHR_reusable_sync 1
|
||||
typedef khronos_utime_nanoseconds_t EGLTimeKHR;
|
||||
#ifdef KHRONOS_SUPPORT_INT64
|
||||
#define EGL_SYNC_STATUS_KHR 0x30F1
|
||||
#define EGL_SIGNALED_KHR 0x30F2
|
||||
#define EGL_UNSIGNALED_KHR 0x30F3
|
||||
#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5
|
||||
#define EGL_CONDITION_SATISFIED_KHR 0x30F6
|
||||
#define EGL_SYNC_TYPE_KHR 0x30F7
|
||||
#define EGL_SYNC_REUSABLE_KHR 0x30FA
|
||||
#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001
|
||||
#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull
|
||||
#define EGL_NO_SYNC_KHR ((EGLSyncKHR)0)
|
||||
typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync);
|
||||
typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR (EGLDisplay dpy, EGLSyncKHR sync);
|
||||
EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
|
||||
#endif
|
||||
#endif /* KHRONOS_SUPPORT_INT64 */
|
||||
#endif /* EGL_KHR_reusable_sync */
|
||||
|
||||
#ifndef EGL_KHR_stream
|
||||
#define EGL_KHR_stream 1
|
||||
typedef void *EGLStreamKHR;
|
||||
typedef khronos_uint64_t EGLuint64KHR;
|
||||
#ifdef KHRONOS_SUPPORT_INT64
|
||||
#define EGL_NO_STREAM_KHR ((EGLStreamKHR)0)
|
||||
#define EGL_CONSUMER_LATENCY_USEC_KHR 0x3210
|
||||
#define EGL_PRODUCER_FRAME_KHR 0x3212
|
||||
#define EGL_CONSUMER_FRAME_KHR 0x3213
|
||||
#define EGL_STREAM_STATE_KHR 0x3214
|
||||
#define EGL_STREAM_STATE_CREATED_KHR 0x3215
|
||||
#define EGL_STREAM_STATE_CONNECTING_KHR 0x3216
|
||||
#define EGL_STREAM_STATE_EMPTY_KHR 0x3217
|
||||
#define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218
|
||||
#define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219
|
||||
#define EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A
|
||||
#define EGL_BAD_STREAM_KHR 0x321B
|
||||
#define EGL_BAD_STATE_KHR 0x321C
|
||||
typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMKHRPROC) (EGLDisplay dpy, const EGLint *attrib_list);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMU64KHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamKHR (EGLDisplay dpy, const EGLint *attrib_list);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglDestroyStreamKHR (EGLDisplay dpy, EGLStreamKHR stream);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value);
|
||||
#endif
|
||||
#endif /* KHRONOS_SUPPORT_INT64 */
|
||||
#endif /* EGL_KHR_stream */
|
||||
|
||||
#ifndef EGL_KHR_stream_consumer_gltexture
|
||||
#define EGL_KHR_stream_consumer_gltexture 1
|
||||
#ifdef EGL_KHR_stream
|
||||
#define EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalKHR (EGLDisplay dpy, EGLStreamKHR stream);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireKHR (EGLDisplay dpy, EGLStreamKHR stream);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR (EGLDisplay dpy, EGLStreamKHR stream);
|
||||
#endif
|
||||
#endif /* EGL_KHR_stream */
|
||||
#endif /* EGL_KHR_stream_consumer_gltexture */
|
||||
|
||||
#ifndef EGL_KHR_stream_cross_process_fd
|
||||
#define EGL_KHR_stream_cross_process_fd 1
|
||||
typedef int EGLNativeFileDescriptorKHR;
|
||||
#ifdef EGL_KHR_stream
|
||||
#define EGL_NO_FILE_DESCRIPTOR_KHR ((EGLNativeFileDescriptorKHR)(-1))
|
||||
typedef EGLNativeFileDescriptorKHR (EGLAPIENTRYP PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
|
||||
typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLNativeFileDescriptorKHR EGLAPIENTRY eglGetStreamFileDescriptorKHR (EGLDisplay dpy, EGLStreamKHR stream);
|
||||
EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamFromFileDescriptorKHR (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
|
||||
#endif
|
||||
#endif /* EGL_KHR_stream */
|
||||
#endif /* EGL_KHR_stream_cross_process_fd */
|
||||
|
||||
#ifndef EGL_KHR_stream_fifo
|
||||
#define EGL_KHR_stream_fifo 1
|
||||
#ifdef EGL_KHR_stream
|
||||
#define EGL_STREAM_FIFO_LENGTH_KHR 0x31FC
|
||||
#define EGL_STREAM_TIME_NOW_KHR 0x31FD
|
||||
#define EGL_STREAM_TIME_CONSUMER_KHR 0x31FE
|
||||
#define EGL_STREAM_TIME_PRODUCER_KHR 0x31FF
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMTIMEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamTimeKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value);
|
||||
#endif
|
||||
#endif /* EGL_KHR_stream */
|
||||
#endif /* EGL_KHR_stream_fifo */
|
||||
|
||||
#ifndef EGL_KHR_stream_producer_aldatalocator
|
||||
#define EGL_KHR_stream_producer_aldatalocator 1
|
||||
#ifdef EGL_KHR_stream
|
||||
#endif /* EGL_KHR_stream */
|
||||
#endif /* EGL_KHR_stream_producer_aldatalocator */
|
||||
|
||||
#ifndef EGL_KHR_stream_producer_eglsurface
|
||||
#define EGL_KHR_stream_producer_eglsurface 1
|
||||
#ifdef EGL_KHR_stream
|
||||
#define EGL_STREAM_BIT_KHR 0x0800
|
||||
typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC) (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLSurface EGLAPIENTRY eglCreateStreamProducerSurfaceKHR (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list);
|
||||
#endif
|
||||
#endif /* EGL_KHR_stream */
|
||||
#endif /* EGL_KHR_stream_producer_eglsurface */
|
||||
|
||||
#ifndef EGL_KHR_surfaceless_context
|
||||
#define EGL_KHR_surfaceless_context 1
|
||||
#endif /* EGL_KHR_surfaceless_context */
|
||||
|
||||
#ifndef EGL_KHR_vg_parent_image
|
||||
#define EGL_KHR_vg_parent_image 1
|
||||
#define EGL_VG_PARENT_IMAGE_KHR 0x30BA
|
||||
#endif /* EGL_KHR_vg_parent_image */
|
||||
|
||||
#ifndef EGL_KHR_wait_sync
|
||||
#define EGL_KHR_wait_sync 1
|
||||
typedef EGLint (EGLAPIENTRYP PFNEGLWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLint EGLAPIENTRY eglWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
|
||||
#endif
|
||||
#endif /* EGL_KHR_wait_sync */
|
||||
|
||||
#ifndef EGL_ANDROID_blob_cache
|
||||
#define EGL_ANDROID_blob_cache 1
|
||||
typedef khronos_ssize_t EGLsizeiANDROID;
|
||||
typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize);
|
||||
typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize);
|
||||
typedef void (EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSANDROIDPROC) (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI void EGLAPIENTRY eglSetBlobCacheFuncsANDROID (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
|
||||
#endif
|
||||
#endif /* EGL_ANDROID_blob_cache */
|
||||
|
||||
#ifndef EGL_ANDROID_framebuffer_target
|
||||
#define EGL_ANDROID_framebuffer_target 1
|
||||
#define EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147
|
||||
#endif /* EGL_ANDROID_framebuffer_target */
|
||||
|
||||
#ifndef EGL_ANDROID_image_native_buffer
|
||||
#define EGL_ANDROID_image_native_buffer 1
|
||||
#define EGL_NATIVE_BUFFER_ANDROID 0x3140
|
||||
#endif /* EGL_ANDROID_image_native_buffer */
|
||||
|
||||
#ifndef EGL_ANDROID_native_fence_sync
|
||||
#define EGL_ANDROID_native_fence_sync 1
|
||||
#define EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144
|
||||
#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID 0x3145
|
||||
#define EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146
|
||||
#define EGL_NO_NATIVE_FENCE_FD_ANDROID -1
|
||||
typedef EGLint (EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDANDROIDPROC) (EGLDisplay dpy, EGLSyncKHR sync);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID (EGLDisplay dpy, EGLSyncKHR sync);
|
||||
#endif
|
||||
#endif /* EGL_ANDROID_native_fence_sync */
|
||||
|
||||
#ifndef EGL_ANDROID_recordable
|
||||
#define EGL_ANDROID_recordable 1
|
||||
#define EGL_RECORDABLE_ANDROID 0x3142
|
||||
#endif /* EGL_ANDROID_recordable */
|
||||
|
||||
#ifndef EGL_ANGLE_d3d_share_handle_client_buffer
|
||||
#define EGL_ANGLE_d3d_share_handle_client_buffer 1
|
||||
#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
|
||||
#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */
|
||||
|
||||
#ifndef EGL_ANGLE_window_fixed_size
|
||||
#define EGL_ANGLE_window_fixed_size 1
|
||||
#define EGL_FIXED_SIZE_ANGLE 0x3201
|
||||
#endif /* EGL_ANGLE_window_fixed_size */
|
||||
|
||||
#ifndef EGL_ANGLE_query_surface_pointer
|
||||
#define EGL_ANGLE_query_surface_pointer 1
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPOINTERANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);
|
||||
#endif
|
||||
#endif /* EGL_ANGLE_query_surface_pointer */
|
||||
|
||||
#ifndef EGL_ANGLE_software_display
|
||||
#define EGL_ANGLE_software_display 1
|
||||
#define EGL_SOFTWARE_DISPLAY_ANGLE ((EGLNativeDisplayType)-1)
|
||||
#endif /* EGL_ANGLE_software_display */
|
||||
|
||||
#ifndef EGL_ANGLE_direct3d_display
|
||||
#define EGL_ANGLE_direct3d_display 1
|
||||
#define EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE ((EGLNativeDisplayType)-2)
|
||||
#define EGL_D3D11_ONLY_DISPLAY_ANGLE ((EGLNativeDisplayType)-3)
|
||||
#endif /* EGL_ANGLE_direct3d_display */
|
||||
|
||||
#ifndef EGL_ANGLE_surface_d3d_texture_2d_share_handle
|
||||
#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1
|
||||
#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */
|
||||
|
||||
#ifndef EGL_ANGLE_surface_d3d_render_to_back_buffer
|
||||
#define EGL_ANGLE_surface_d3d_render_to_back_buffer 1
|
||||
#define EGL_ANGLE_DISPLAY_ALLOW_RENDER_TO_BACK_BUFFER 0x320B
|
||||
#define EGL_ANGLE_SURFACE_RENDER_TO_BACK_BUFFER 0x320C
|
||||
#endif /* EGL_ANGLE_surface_d3d_render_to_back_buffer */
|
||||
|
||||
#ifndef EGL_ANGLE_platform_angle
|
||||
#define EGL_ANGLE_platform_angle 1
|
||||
#define EGL_PLATFORM_ANGLE_ANGLE 0x3201
|
||||
#define EGL_PLATFORM_ANGLE_TYPE_ANGLE 0x3202
|
||||
#define EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE 0x3203
|
||||
#define EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE 0x3204
|
||||
#define EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE 0x3205
|
||||
#endif /* EGL_ANGLE_platform_angle */
|
||||
|
||||
#ifndef EGL_ANGLE_platform_angle_d3d
|
||||
#define EGL_ANGLE_platform_angle_d3d 1
|
||||
#define EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE 0x3206
|
||||
#define EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE 0x3207
|
||||
#define EGL_PLATFORM_ANGLE_USE_WARP_ANGLE 0x3208
|
||||
#endif /* EGL_ANGLE_platform_angle_d3d */
|
||||
|
||||
#ifndef EGL_ANGLE_platform_angle_opengl
|
||||
#define EGL_ANGLE_platform_angle_opengl 1
|
||||
#define EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE 0x3209
|
||||
#define EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE 0x320A
|
||||
#endif /* EGL_ANGLE_platform_angle_opengl */
|
||||
|
||||
#ifndef EGL_ARM_pixmap_multisample_discard
|
||||
#define EGL_ARM_pixmap_multisample_discard 1
|
||||
#define EGL_DISCARD_SAMPLES_ARM 0x3286
|
||||
#endif /* EGL_ARM_pixmap_multisample_discard */
|
||||
|
||||
#ifndef EGL_EXT_buffer_age
|
||||
#define EGL_EXT_buffer_age 1
|
||||
#define EGL_BUFFER_AGE_EXT 0x313D
|
||||
#endif /* EGL_EXT_buffer_age */
|
||||
|
||||
#ifndef EGL_EXT_client_extensions
|
||||
#define EGL_EXT_client_extensions 1
|
||||
#endif /* EGL_EXT_client_extensions */
|
||||
|
||||
#ifndef EGL_EXT_create_context_robustness
|
||||
#define EGL_EXT_create_context_robustness 1
|
||||
#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF
|
||||
#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138
|
||||
#define EGL_NO_RESET_NOTIFICATION_EXT 0x31BE
|
||||
#define EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF
|
||||
#endif /* EGL_EXT_create_context_robustness */
|
||||
|
||||
#ifndef EGL_EXT_device_base
|
||||
#define EGL_EXT_device_base 1
|
||||
typedef void *EGLDeviceEXT;
|
||||
#define EGL_NO_DEVICE_EXT ((EGLDeviceEXT)(0))
|
||||
#define EGL_BAD_DEVICE_EXT 0x322B
|
||||
#define EGL_DEVICE_EXT 0x322C
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEATTRIBEXTPROC) (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value);
|
||||
typedef const char *(EGLAPIENTRYP PFNEGLQUERYDEVICESTRINGEXTPROC) (EGLDeviceEXT device, EGLint name);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICESEXTPROC) (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBEXTPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceAttribEXT (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value);
|
||||
EGLAPI const char *EGLAPIENTRY eglQueryDeviceStringEXT (EGLDeviceEXT device, EGLint name);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglQueryDevicesEXT (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribEXT (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
|
||||
#endif
|
||||
#endif /* EGL_EXT_device_base */
|
||||
|
||||
#ifndef EGL_EXT_image_dma_buf_import
|
||||
#define EGL_EXT_image_dma_buf_import 1
|
||||
#define EGL_LINUX_DMA_BUF_EXT 0x3270
|
||||
#define EGL_LINUX_DRM_FOURCC_EXT 0x3271
|
||||
#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272
|
||||
#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273
|
||||
#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274
|
||||
#define EGL_DMA_BUF_PLANE1_FD_EXT 0x3275
|
||||
#define EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276
|
||||
#define EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277
|
||||
#define EGL_DMA_BUF_PLANE2_FD_EXT 0x3278
|
||||
#define EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279
|
||||
#define EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A
|
||||
#define EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B
|
||||
#define EGL_SAMPLE_RANGE_HINT_EXT 0x327C
|
||||
#define EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D
|
||||
#define EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E
|
||||
#define EGL_ITU_REC601_EXT 0x327F
|
||||
#define EGL_ITU_REC709_EXT 0x3280
|
||||
#define EGL_ITU_REC2020_EXT 0x3281
|
||||
#define EGL_YUV_FULL_RANGE_EXT 0x3282
|
||||
#define EGL_YUV_NARROW_RANGE_EXT 0x3283
|
||||
#define EGL_YUV_CHROMA_SITING_0_EXT 0x3284
|
||||
#define EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285
|
||||
#endif /* EGL_EXT_image_dma_buf_import */
|
||||
|
||||
#ifndef EGL_EXT_multiview_window
|
||||
#define EGL_EXT_multiview_window 1
|
||||
#define EGL_MULTIVIEW_VIEW_COUNT_EXT 0x3134
|
||||
#endif /* EGL_EXT_multiview_window */
|
||||
|
||||
#ifndef EGL_EXT_platform_base
|
||||
#define EGL_EXT_platform_base 1
|
||||
typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void *native_display, const EGLint *attrib_list);
|
||||
typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
|
||||
typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT (EGLenum platform, void *native_display, const EGLint *attrib_list);
|
||||
EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
|
||||
EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);
|
||||
#endif
|
||||
#endif /* EGL_EXT_platform_base */
|
||||
|
||||
#ifndef EGL_EXT_platform_device
|
||||
#define EGL_EXT_platform_device 1
|
||||
#define EGL_PLATFORM_DEVICE_EXT 0x313F
|
||||
#endif /* EGL_EXT_platform_device */
|
||||
|
||||
#ifndef EGL_EXT_platform_wayland
|
||||
#define EGL_EXT_platform_wayland 1
|
||||
#define EGL_PLATFORM_WAYLAND_EXT 0x31D8
|
||||
#endif /* EGL_EXT_platform_wayland */
|
||||
|
||||
#ifndef EGL_EXT_platform_x11
|
||||
#define EGL_EXT_platform_x11 1
|
||||
#define EGL_PLATFORM_X11_EXT 0x31D5
|
||||
#define EGL_PLATFORM_X11_SCREEN_EXT 0x31D6
|
||||
#endif /* EGL_EXT_platform_x11 */
|
||||
|
||||
#ifndef EGL_EXT_protected_surface
|
||||
#define EGL_EXT_protected_surface 1
|
||||
#define EGL_PROTECTED_CONTENT_EXT 0x32C0
|
||||
#endif /* EGL_EXT_protected_surface */
|
||||
|
||||
#ifndef EGL_EXT_swap_buffers_with_damage
|
||||
#define EGL_EXT_swap_buffers_with_damage 1
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageEXT (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
|
||||
#endif
|
||||
#endif /* EGL_EXT_swap_buffers_with_damage */
|
||||
|
||||
#ifndef EGL_HI_clientpixmap
|
||||
#define EGL_HI_clientpixmap 1
|
||||
struct EGLClientPixmapHI {
|
||||
void *pData;
|
||||
EGLint iWidth;
|
||||
EGLint iHeight;
|
||||
EGLint iStride;
|
||||
};
|
||||
#define EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74
|
||||
typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap);
|
||||
#endif
|
||||
#endif /* EGL_HI_clientpixmap */
|
||||
|
||||
#ifndef EGL_HI_colorformats
|
||||
#define EGL_HI_colorformats 1
|
||||
#define EGL_COLOR_FORMAT_HI 0x8F70
|
||||
#define EGL_COLOR_RGB_HI 0x8F71
|
||||
#define EGL_COLOR_RGBA_HI 0x8F72
|
||||
#define EGL_COLOR_ARGB_HI 0x8F73
|
||||
#endif /* EGL_HI_colorformats */
|
||||
|
||||
#ifndef EGL_IMG_context_priority
|
||||
#define EGL_IMG_context_priority 1
|
||||
#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100
|
||||
#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101
|
||||
#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102
|
||||
#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103
|
||||
#endif /* EGL_IMG_context_priority */
|
||||
|
||||
#ifndef EGL_MESA_drm_image
|
||||
#define EGL_MESA_drm_image 1
|
||||
#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0
|
||||
#define EGL_DRM_BUFFER_USE_MESA 0x31D1
|
||||
#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2
|
||||
#define EGL_DRM_BUFFER_MESA 0x31D3
|
||||
#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4
|
||||
#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001
|
||||
#define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002
|
||||
typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint *attrib_list);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLImageKHR EGLAPIENTRY eglCreateDRMImageMESA (EGLDisplay dpy, const EGLint *attrib_list);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);
|
||||
#endif
|
||||
#endif /* EGL_MESA_drm_image */
|
||||
|
||||
#ifndef EGL_MESA_platform_gbm
|
||||
#define EGL_MESA_platform_gbm 1
|
||||
#define EGL_PLATFORM_GBM_MESA 0x31D7
|
||||
#endif /* EGL_MESA_platform_gbm */
|
||||
|
||||
#ifndef EGL_NOK_swap_region
|
||||
#define EGL_NOK_swap_region 1
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGIONNOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegionNOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
|
||||
#endif
|
||||
#endif /* EGL_NOK_swap_region */
|
||||
|
||||
#ifndef EGL_NOK_swap_region2
|
||||
#define EGL_NOK_swap_region2 1
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGION2NOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegion2NOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
|
||||
#endif
|
||||
#endif /* EGL_NOK_swap_region2 */
|
||||
|
||||
#ifndef EGL_NOK_texture_from_pixmap
|
||||
#define EGL_NOK_texture_from_pixmap 1
|
||||
#define EGL_Y_INVERTED_NOK 0x307F
|
||||
#endif /* EGL_NOK_texture_from_pixmap */
|
||||
|
||||
#ifndef EGL_NV_3dvision_surface
|
||||
#define EGL_NV_3dvision_surface 1
|
||||
#define EGL_AUTO_STEREO_NV 0x3136
|
||||
#endif /* EGL_NV_3dvision_surface */
|
||||
|
||||
#ifndef EGL_NV_coverage_sample
|
||||
#define EGL_NV_coverage_sample 1
|
||||
#define EGL_COVERAGE_BUFFERS_NV 0x30E0
|
||||
#define EGL_COVERAGE_SAMPLES_NV 0x30E1
|
||||
#endif /* EGL_NV_coverage_sample */
|
||||
|
||||
#ifndef EGL_NV_coverage_sample_resolve
|
||||
#define EGL_NV_coverage_sample_resolve 1
|
||||
#define EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131
|
||||
#define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132
|
||||
#define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133
|
||||
#endif /* EGL_NV_coverage_sample_resolve */
|
||||
|
||||
#ifndef EGL_NV_depth_nonlinear
|
||||
#define EGL_NV_depth_nonlinear 1
|
||||
#define EGL_DEPTH_ENCODING_NV 0x30E2
|
||||
#define EGL_DEPTH_ENCODING_NONE_NV 0
|
||||
#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3
|
||||
#endif /* EGL_NV_depth_nonlinear */
|
||||
|
||||
#ifndef EGL_NV_native_query
|
||||
#define EGL_NV_native_query 1
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEDISPLAYNVPROC) (EGLDisplay dpy, EGLNativeDisplayType *display_id);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEWINDOWNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEPIXMAPNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeDisplayNV (EGLDisplay dpy, EGLNativeDisplayType *display_id);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeWindowNV (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativePixmapNV (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap);
|
||||
#endif
|
||||
#endif /* EGL_NV_native_query */
|
||||
|
||||
#ifndef EGL_NV_post_convert_rounding
|
||||
#define EGL_NV_post_convert_rounding 1
|
||||
#endif /* EGL_NV_post_convert_rounding */
|
||||
|
||||
#ifndef EGL_NV_post_sub_buffer
|
||||
#define EGL_NV_post_sub_buffer 1
|
||||
#define EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
|
||||
#endif
|
||||
#endif /* EGL_NV_post_sub_buffer */
|
||||
|
||||
#ifndef EGL_NV_stream_sync
|
||||
#define EGL_NV_stream_sync 1
|
||||
#define EGL_SYNC_NEW_FRAME_NV 0x321F
|
||||
typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESTREAMSYNCNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateStreamSyncNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list);
|
||||
#endif
|
||||
#endif /* EGL_NV_stream_sync */
|
||||
|
||||
#ifndef EGL_NV_sync
|
||||
#define EGL_NV_sync 1
|
||||
typedef void *EGLSyncNV;
|
||||
typedef khronos_utime_nanoseconds_t EGLTimeNV;
|
||||
#ifdef KHRONOS_SUPPORT_INT64
|
||||
#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6
|
||||
#define EGL_SYNC_STATUS_NV 0x30E7
|
||||
#define EGL_SIGNALED_NV 0x30E8
|
||||
#define EGL_UNSIGNALED_NV 0x30E9
|
||||
#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001
|
||||
#define EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFFull
|
||||
#define EGL_ALREADY_SIGNALED_NV 0x30EA
|
||||
#define EGL_TIMEOUT_EXPIRED_NV 0x30EB
|
||||
#define EGL_CONDITION_SATISFIED_NV 0x30EC
|
||||
#define EGL_SYNC_TYPE_NV 0x30ED
|
||||
#define EGL_SYNC_CONDITION_NV 0x30EE
|
||||
#define EGL_SYNC_FENCE_NV 0x30EF
|
||||
#define EGL_NO_SYNC_NV ((EGLSyncNV)0)
|
||||
typedef EGLSyncNV (EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync);
|
||||
typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLSyncNV EGLAPIENTRY eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncNV (EGLSyncNV sync);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglFenceNV (EGLSyncNV sync);
|
||||
EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncNV (EGLSyncNV sync, EGLenum mode);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint *value);
|
||||
#endif
|
||||
#endif /* KHRONOS_SUPPORT_INT64 */
|
||||
#endif /* EGL_NV_sync */
|
||||
|
||||
#ifndef EGL_NV_system_time
|
||||
#define EGL_NV_system_time 1
|
||||
typedef khronos_utime_nanoseconds_t EGLuint64NV;
|
||||
#ifdef KHRONOS_SUPPORT_INT64
|
||||
typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) (void);
|
||||
typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC) (void);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV (void);
|
||||
EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV (void);
|
||||
#endif
|
||||
#endif /* KHRONOS_SUPPORT_INT64 */
|
||||
#endif /* EGL_NV_system_time */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -1,131 +0,0 @@
|
|||
#ifndef __eglplatform_h_
|
||||
#define __eglplatform_h_
|
||||
|
||||
/*
|
||||
** Copyright (c) 2007-2013 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a
|
||||
** copy of this software and/or associated documentation files (the
|
||||
** "Materials"), to deal in the Materials without restriction, including
|
||||
** without limitation the rights to use, copy, modify, merge, publish,
|
||||
** distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
** permit persons to whom the Materials are furnished to do so, subject to
|
||||
** the following conditions:
|
||||
**
|
||||
** The above copyright notice and this permission notice shall be included
|
||||
** in all copies or substantial portions of the Materials.
|
||||
**
|
||||
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
*/
|
||||
|
||||
/* Platform-specific types and definitions for egl.h
|
||||
* $Revision: 23432 $ on $Date: 2013-10-09 00:57:24 -0700 (Wed, 09 Oct 2013) $
|
||||
*
|
||||
* Adopters may modify khrplatform.h and this file to suit their platform.
|
||||
* You are encouraged to submit all modifications to the Khronos group so that
|
||||
* they can be included in future versions of this file. Please submit changes
|
||||
* by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla)
|
||||
* by filing a bug against product "EGL" component "Registry".
|
||||
*/
|
||||
|
||||
#include <KHR/khrplatform.h>
|
||||
|
||||
/* Macros used in EGL function prototype declarations.
|
||||
*
|
||||
* EGL functions should be prototyped as:
|
||||
*
|
||||
* EGLAPI return-type EGLAPIENTRY eglFunction(arguments);
|
||||
* typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments);
|
||||
*
|
||||
* KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h
|
||||
*/
|
||||
|
||||
#ifndef EGLAPI
|
||||
#define EGLAPI KHRONOS_APICALL
|
||||
#endif
|
||||
|
||||
#ifndef EGLAPIENTRY
|
||||
#define EGLAPIENTRY KHRONOS_APIENTRY
|
||||
#endif
|
||||
#define EGLAPIENTRYP EGLAPIENTRY*
|
||||
|
||||
/* The types NativeDisplayType, NativeWindowType, and NativePixmapType
|
||||
* are aliases of window-system-dependent types, such as X Display * or
|
||||
* Windows Device Context. They must be defined in platform-specific
|
||||
* code below. The EGL-prefixed versions of Native*Type are the same
|
||||
* types, renamed in EGL 1.3 so all types in the API start with "EGL".
|
||||
*
|
||||
* Khronos STRONGLY RECOMMENDS that you use the default definitions
|
||||
* provided below, since these changes affect both binary and source
|
||||
* portability of applications using EGL running on different EGL
|
||||
* implementations.
|
||||
*/
|
||||
|
||||
#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN 1
|
||||
#endif
|
||||
#include <windows.h>
|
||||
|
||||
typedef HDC EGLNativeDisplayType;
|
||||
typedef HBITMAP EGLNativePixmapType;
|
||||
|
||||
#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_PC_APP || WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) /* Windows Store */
|
||||
#include <inspectable.h>
|
||||
typedef IInspectable* EGLNativeWindowType;
|
||||
#else
|
||||
typedef HWND EGLNativeWindowType;
|
||||
#endif
|
||||
|
||||
#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */
|
||||
|
||||
typedef int EGLNativeDisplayType;
|
||||
typedef void *EGLNativeWindowType;
|
||||
typedef void *EGLNativePixmapType;
|
||||
|
||||
#elif defined(__ANDROID__) || defined(ANDROID)
|
||||
|
||||
#include <android/native_window.h>
|
||||
|
||||
struct egl_native_pixmap_t;
|
||||
|
||||
typedef struct ANativeWindow* EGLNativeWindowType;
|
||||
typedef struct egl_native_pixmap_t* EGLNativePixmapType;
|
||||
typedef void* EGLNativeDisplayType;
|
||||
|
||||
#elif defined(__unix__)
|
||||
|
||||
/* X11 (tentative) */
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xutil.h>
|
||||
|
||||
typedef Display *EGLNativeDisplayType;
|
||||
typedef Pixmap EGLNativePixmapType;
|
||||
typedef Window EGLNativeWindowType;
|
||||
|
||||
#else
|
||||
#error "Platform not recognized"
|
||||
#endif
|
||||
|
||||
/* EGL 1.2 types, renamed for consistency in EGL 1.3 */
|
||||
typedef EGLNativeDisplayType NativeDisplayType;
|
||||
typedef EGLNativePixmapType NativePixmapType;
|
||||
typedef EGLNativeWindowType NativeWindowType;
|
||||
|
||||
|
||||
/* Define EGLint. This must be a signed integral type large enough to contain
|
||||
* all legal attribute names and values passed into and out of EGL, whether
|
||||
* their type is boolean, bitmask, enumerant (symbolic constant), integer,
|
||||
* handle, or other. While in general a 32-bit integer will suffice, if
|
||||
* handles are 64 bit types, then EGLint should be defined as a signed 64-bit
|
||||
* integer type.
|
||||
*/
|
||||
typedef khronos_int32_t EGLint;
|
||||
|
||||
#endif /* __eglplatform_h */
|
|
@ -1,620 +0,0 @@
|
|||
#ifndef __gl2_h_
|
||||
#define __gl2_h_
|
||||
|
||||
/* $Revision: 20555 $ on $Date:: 2013-02-12 14:32:47 -0800 #$ */
|
||||
|
||||
#include <GLES2/gl2platform.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This document is licensed under the SGI Free Software B License Version
|
||||
* 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
|
||||
*/
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Data type definitions
|
||||
*-----------------------------------------------------------------------*/
|
||||
|
||||
typedef void GLvoid;
|
||||
typedef char GLchar;
|
||||
typedef unsigned int GLenum;
|
||||
typedef unsigned char GLboolean;
|
||||
typedef unsigned int GLbitfield;
|
||||
typedef khronos_int8_t GLbyte;
|
||||
typedef short GLshort;
|
||||
typedef int GLint;
|
||||
typedef int GLsizei;
|
||||
typedef khronos_uint8_t GLubyte;
|
||||
typedef unsigned short GLushort;
|
||||
typedef unsigned int GLuint;
|
||||
typedef khronos_float_t GLfloat;
|
||||
typedef khronos_float_t GLclampf;
|
||||
typedef khronos_int32_t GLfixed;
|
||||
|
||||
/* GL types for handling large vertex buffer objects */
|
||||
typedef khronos_intptr_t GLintptr;
|
||||
typedef khronos_ssize_t GLsizeiptr;
|
||||
|
||||
/* OpenGL ES core versions */
|
||||
#define GL_ES_VERSION_2_0 1
|
||||
|
||||
/* ClearBufferMask */
|
||||
#define GL_DEPTH_BUFFER_BIT 0x00000100
|
||||
#define GL_STENCIL_BUFFER_BIT 0x00000400
|
||||
#define GL_COLOR_BUFFER_BIT 0x00004000
|
||||
|
||||
/* Boolean */
|
||||
#define GL_FALSE 0
|
||||
#define GL_TRUE 1
|
||||
|
||||
/* BeginMode */
|
||||
#define GL_POINTS 0x0000
|
||||
#define GL_LINES 0x0001
|
||||
#define GL_LINE_LOOP 0x0002
|
||||
#define GL_LINE_STRIP 0x0003
|
||||
#define GL_TRIANGLES 0x0004
|
||||
#define GL_TRIANGLE_STRIP 0x0005
|
||||
#define GL_TRIANGLE_FAN 0x0006
|
||||
|
||||
/* AlphaFunction (not supported in ES20) */
|
||||
/* GL_NEVER */
|
||||
/* GL_LESS */
|
||||
/* GL_EQUAL */
|
||||
/* GL_LEQUAL */
|
||||
/* GL_GREATER */
|
||||
/* GL_NOTEQUAL */
|
||||
/* GL_GEQUAL */
|
||||
/* GL_ALWAYS */
|
||||
|
||||
/* BlendingFactorDest */
|
||||
#define GL_ZERO 0
|
||||
#define GL_ONE 1
|
||||
#define GL_SRC_COLOR 0x0300
|
||||
#define GL_ONE_MINUS_SRC_COLOR 0x0301
|
||||
#define GL_SRC_ALPHA 0x0302
|
||||
#define GL_ONE_MINUS_SRC_ALPHA 0x0303
|
||||
#define GL_DST_ALPHA 0x0304
|
||||
#define GL_ONE_MINUS_DST_ALPHA 0x0305
|
||||
|
||||
/* BlendingFactorSrc */
|
||||
/* GL_ZERO */
|
||||
/* GL_ONE */
|
||||
#define GL_DST_COLOR 0x0306
|
||||
#define GL_ONE_MINUS_DST_COLOR 0x0307
|
||||
#define GL_SRC_ALPHA_SATURATE 0x0308
|
||||
/* GL_SRC_ALPHA */
|
||||
/* GL_ONE_MINUS_SRC_ALPHA */
|
||||
/* GL_DST_ALPHA */
|
||||
/* GL_ONE_MINUS_DST_ALPHA */
|
||||
|
||||
/* BlendEquationSeparate */
|
||||
#define GL_FUNC_ADD 0x8006
|
||||
#define GL_BLEND_EQUATION 0x8009
|
||||
#define GL_BLEND_EQUATION_RGB 0x8009 /* same as BLEND_EQUATION */
|
||||
#define GL_BLEND_EQUATION_ALPHA 0x883D
|
||||
|
||||
/* BlendSubtract */
|
||||
#define GL_FUNC_SUBTRACT 0x800A
|
||||
#define GL_FUNC_REVERSE_SUBTRACT 0x800B
|
||||
|
||||
/* Separate Blend Functions */
|
||||
#define GL_BLEND_DST_RGB 0x80C8
|
||||
#define GL_BLEND_SRC_RGB 0x80C9
|
||||
#define GL_BLEND_DST_ALPHA 0x80CA
|
||||
#define GL_BLEND_SRC_ALPHA 0x80CB
|
||||
#define GL_CONSTANT_COLOR 0x8001
|
||||
#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
|
||||
#define GL_CONSTANT_ALPHA 0x8003
|
||||
#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
|
||||
#define GL_BLEND_COLOR 0x8005
|
||||
|
||||
/* Buffer Objects */
|
||||
#define GL_ARRAY_BUFFER 0x8892
|
||||
#define GL_ELEMENT_ARRAY_BUFFER 0x8893
|
||||
#define GL_ARRAY_BUFFER_BINDING 0x8894
|
||||
#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
|
||||
|
||||
#define GL_STREAM_DRAW 0x88E0
|
||||
#define GL_STATIC_DRAW 0x88E4
|
||||
#define GL_DYNAMIC_DRAW 0x88E8
|
||||
|
||||
#define GL_BUFFER_SIZE 0x8764
|
||||
#define GL_BUFFER_USAGE 0x8765
|
||||
|
||||
#define GL_CURRENT_VERTEX_ATTRIB 0x8626
|
||||
|
||||
/* CullFaceMode */
|
||||
#define GL_FRONT 0x0404
|
||||
#define GL_BACK 0x0405
|
||||
#define GL_FRONT_AND_BACK 0x0408
|
||||
|
||||
/* DepthFunction */
|
||||
/* GL_NEVER */
|
||||
/* GL_LESS */
|
||||
/* GL_EQUAL */
|
||||
/* GL_LEQUAL */
|
||||
/* GL_GREATER */
|
||||
/* GL_NOTEQUAL */
|
||||
/* GL_GEQUAL */
|
||||
/* GL_ALWAYS */
|
||||
|
||||
/* EnableCap */
|
||||
#define GL_TEXTURE_2D 0x0DE1
|
||||
#define GL_CULL_FACE 0x0B44
|
||||
#define GL_BLEND 0x0BE2
|
||||
#define GL_DITHER 0x0BD0
|
||||
#define GL_STENCIL_TEST 0x0B90
|
||||
#define GL_DEPTH_TEST 0x0B71
|
||||
#define GL_SCISSOR_TEST 0x0C11
|
||||
#define GL_POLYGON_OFFSET_FILL 0x8037
|
||||
#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
|
||||
#define GL_SAMPLE_COVERAGE 0x80A0
|
||||
|
||||
/* ErrorCode */
|
||||
#define GL_NO_ERROR 0
|
||||
#define GL_INVALID_ENUM 0x0500
|
||||
#define GL_INVALID_VALUE 0x0501
|
||||
#define GL_INVALID_OPERATION 0x0502
|
||||
#define GL_OUT_OF_MEMORY 0x0505
|
||||
|
||||
/* FrontFaceDirection */
|
||||
#define GL_CW 0x0900
|
||||
#define GL_CCW 0x0901
|
||||
|
||||
/* GetPName */
|
||||
#define GL_LINE_WIDTH 0x0B21
|
||||
#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
|
||||
#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
|
||||
#define GL_CULL_FACE_MODE 0x0B45
|
||||
#define GL_FRONT_FACE 0x0B46
|
||||
#define GL_DEPTH_RANGE 0x0B70
|
||||
#define GL_DEPTH_WRITEMASK 0x0B72
|
||||
#define GL_DEPTH_CLEAR_VALUE 0x0B73
|
||||
#define GL_DEPTH_FUNC 0x0B74
|
||||
#define GL_STENCIL_CLEAR_VALUE 0x0B91
|
||||
#define GL_STENCIL_FUNC 0x0B92
|
||||
#define GL_STENCIL_FAIL 0x0B94
|
||||
#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
|
||||
#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96
|
||||
#define GL_STENCIL_REF 0x0B97
|
||||
#define GL_STENCIL_VALUE_MASK 0x0B93
|
||||
#define GL_STENCIL_WRITEMASK 0x0B98
|
||||
#define GL_STENCIL_BACK_FUNC 0x8800
|
||||
#define GL_STENCIL_BACK_FAIL 0x8801
|
||||
#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802
|
||||
#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803
|
||||
#define GL_STENCIL_BACK_REF 0x8CA3
|
||||
#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4
|
||||
#define GL_STENCIL_BACK_WRITEMASK 0x8CA5
|
||||
#define GL_VIEWPORT 0x0BA2
|
||||
#define GL_SCISSOR_BOX 0x0C10
|
||||
/* GL_SCISSOR_TEST */
|
||||
#define GL_COLOR_CLEAR_VALUE 0x0C22
|
||||
#define GL_COLOR_WRITEMASK 0x0C23
|
||||
#define GL_UNPACK_ALIGNMENT 0x0CF5
|
||||
#define GL_PACK_ALIGNMENT 0x0D05
|
||||
#define GL_MAX_TEXTURE_SIZE 0x0D33
|
||||
#define GL_MAX_VIEWPORT_DIMS 0x0D3A
|
||||
#define GL_SUBPIXEL_BITS 0x0D50
|
||||
#define GL_RED_BITS 0x0D52
|
||||
#define GL_GREEN_BITS 0x0D53
|
||||
#define GL_BLUE_BITS 0x0D54
|
||||
#define GL_ALPHA_BITS 0x0D55
|
||||
#define GL_DEPTH_BITS 0x0D56
|
||||
#define GL_STENCIL_BITS 0x0D57
|
||||
#define GL_POLYGON_OFFSET_UNITS 0x2A00
|
||||
/* GL_POLYGON_OFFSET_FILL */
|
||||
#define GL_POLYGON_OFFSET_FACTOR 0x8038
|
||||
#define GL_TEXTURE_BINDING_2D 0x8069
|
||||
#define GL_SAMPLE_BUFFERS 0x80A8
|
||||
#define GL_SAMPLES 0x80A9
|
||||
#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
|
||||
#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
|
||||
|
||||
/* GetTextureParameter */
|
||||
/* GL_TEXTURE_MAG_FILTER */
|
||||
/* GL_TEXTURE_MIN_FILTER */
|
||||
/* GL_TEXTURE_WRAP_S */
|
||||
/* GL_TEXTURE_WRAP_T */
|
||||
|
||||
#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
|
||||
#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
|
||||
|
||||
/* HintMode */
|
||||
#define GL_DONT_CARE 0x1100
|
||||
#define GL_FASTEST 0x1101
|
||||
#define GL_NICEST 0x1102
|
||||
|
||||
/* HintTarget */
|
||||
#define GL_GENERATE_MIPMAP_HINT 0x8192
|
||||
|
||||
/* DataType */
|
||||
#define GL_BYTE 0x1400
|
||||
#define GL_UNSIGNED_BYTE 0x1401
|
||||
#define GL_SHORT 0x1402
|
||||
#define GL_UNSIGNED_SHORT 0x1403
|
||||
#define GL_INT 0x1404
|
||||
#define GL_UNSIGNED_INT 0x1405
|
||||
#define GL_FLOAT 0x1406
|
||||
#define GL_FIXED 0x140C
|
||||
|
||||
/* PixelFormat */
|
||||
#define GL_DEPTH_COMPONENT 0x1902
|
||||
#define GL_ALPHA 0x1906
|
||||
#define GL_RGB 0x1907
|
||||
#define GL_RGBA 0x1908
|
||||
#define GL_LUMINANCE 0x1909
|
||||
#define GL_LUMINANCE_ALPHA 0x190A
|
||||
|
||||
/* PixelType */
|
||||
/* GL_UNSIGNED_BYTE */
|
||||
#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
|
||||
#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
|
||||
#define GL_UNSIGNED_SHORT_5_6_5 0x8363
|
||||
|
||||
/* Shaders */
|
||||
#define GL_FRAGMENT_SHADER 0x8B30
|
||||
#define GL_VERTEX_SHADER 0x8B31
|
||||
#define GL_MAX_VERTEX_ATTRIBS 0x8869
|
||||
#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
|
||||
#define GL_MAX_VARYING_VECTORS 0x8DFC
|
||||
#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
|
||||
#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
|
||||
#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
|
||||
#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
|
||||
#define GL_SHADER_TYPE 0x8B4F
|
||||
#define GL_DELETE_STATUS 0x8B80
|
||||
#define GL_LINK_STATUS 0x8B82
|
||||
#define GL_VALIDATE_STATUS 0x8B83
|
||||
#define GL_ATTACHED_SHADERS 0x8B85
|
||||
#define GL_ACTIVE_UNIFORMS 0x8B86
|
||||
#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87
|
||||
#define GL_ACTIVE_ATTRIBUTES 0x8B89
|
||||
#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A
|
||||
#define GL_SHADING_LANGUAGE_VERSION 0x8B8C
|
||||
#define GL_CURRENT_PROGRAM 0x8B8D
|
||||
|
||||
/* StencilFunction */
|
||||
#define GL_NEVER 0x0200
|
||||
#define GL_LESS 0x0201
|
||||
#define GL_EQUAL 0x0202
|
||||
#define GL_LEQUAL 0x0203
|
||||
#define GL_GREATER 0x0204
|
||||
#define GL_NOTEQUAL 0x0205
|
||||
#define GL_GEQUAL 0x0206
|
||||
#define GL_ALWAYS 0x0207
|
||||
|
||||
/* StencilOp */
|
||||
/* GL_ZERO */
|
||||
#define GL_KEEP 0x1E00
|
||||
#define GL_REPLACE 0x1E01
|
||||
#define GL_INCR 0x1E02
|
||||
#define GL_DECR 0x1E03
|
||||
#define GL_INVERT 0x150A
|
||||
#define GL_INCR_WRAP 0x8507
|
||||
#define GL_DECR_WRAP 0x8508
|
||||
|
||||
/* StringName */
|
||||
#define GL_VENDOR 0x1F00
|
||||
#define GL_RENDERER 0x1F01
|
||||
#define GL_VERSION 0x1F02
|
||||
#define GL_EXTENSIONS 0x1F03
|
||||
|
||||
/* TextureMagFilter */
|
||||
#define GL_NEAREST 0x2600
|
||||
#define GL_LINEAR 0x2601
|
||||
|
||||
/* TextureMinFilter */
|
||||
/* GL_NEAREST */
|
||||
/* GL_LINEAR */
|
||||
#define GL_NEAREST_MIPMAP_NEAREST 0x2700
|
||||
#define GL_LINEAR_MIPMAP_NEAREST 0x2701
|
||||
#define GL_NEAREST_MIPMAP_LINEAR 0x2702
|
||||
#define GL_LINEAR_MIPMAP_LINEAR 0x2703
|
||||
|
||||
/* TextureParameterName */
|
||||
#define GL_TEXTURE_MAG_FILTER 0x2800
|
||||
#define GL_TEXTURE_MIN_FILTER 0x2801
|
||||
#define GL_TEXTURE_WRAP_S 0x2802
|
||||
#define GL_TEXTURE_WRAP_T 0x2803
|
||||
|
||||
/* TextureTarget */
|
||||
/* GL_TEXTURE_2D */
|
||||
#define GL_TEXTURE 0x1702
|
||||
|
||||
#define GL_TEXTURE_CUBE_MAP 0x8513
|
||||
#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
|
||||
#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
|
||||
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
|
||||
#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
|
||||
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
|
||||
#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
|
||||
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
|
||||
#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
|
||||
|
||||
/* TextureUnit */
|
||||
#define GL_TEXTURE0 0x84C0
|
||||
#define GL_TEXTURE1 0x84C1
|
||||
#define GL_TEXTURE2 0x84C2
|
||||
#define GL_TEXTURE3 0x84C3
|
||||
#define GL_TEXTURE4 0x84C4
|
||||
#define GL_TEXTURE5 0x84C5
|
||||
#define GL_TEXTURE6 0x84C6
|
||||
#define GL_TEXTURE7 0x84C7
|
||||
#define GL_TEXTURE8 0x84C8
|
||||
#define GL_TEXTURE9 0x84C9
|
||||
#define GL_TEXTURE10 0x84CA
|
||||
#define GL_TEXTURE11 0x84CB
|
||||
#define GL_TEXTURE12 0x84CC
|
||||
#define GL_TEXTURE13 0x84CD
|
||||
#define GL_TEXTURE14 0x84CE
|
||||
#define GL_TEXTURE15 0x84CF
|
||||
#define GL_TEXTURE16 0x84D0
|
||||
#define GL_TEXTURE17 0x84D1
|
||||
#define GL_TEXTURE18 0x84D2
|
||||
#define GL_TEXTURE19 0x84D3
|
||||
#define GL_TEXTURE20 0x84D4
|
||||
#define GL_TEXTURE21 0x84D5
|
||||
#define GL_TEXTURE22 0x84D6
|
||||
#define GL_TEXTURE23 0x84D7
|
||||
#define GL_TEXTURE24 0x84D8
|
||||
#define GL_TEXTURE25 0x84D9
|
||||
#define GL_TEXTURE26 0x84DA
|
||||
#define GL_TEXTURE27 0x84DB
|
||||
#define GL_TEXTURE28 0x84DC
|
||||
#define GL_TEXTURE29 0x84DD
|
||||
#define GL_TEXTURE30 0x84DE
|
||||
#define GL_TEXTURE31 0x84DF
|
||||
#define GL_ACTIVE_TEXTURE 0x84E0
|
||||
|
||||
/* TextureWrapMode */
|
||||
#define GL_REPEAT 0x2901
|
||||
#define GL_CLAMP_TO_EDGE 0x812F
|
||||
#define GL_MIRRORED_REPEAT 0x8370
|
||||
|
||||
/* Uniform Types */
|
||||
#define GL_FLOAT_VEC2 0x8B50
|
||||
#define GL_FLOAT_VEC3 0x8B51
|
||||
#define GL_FLOAT_VEC4 0x8B52
|
||||
#define GL_INT_VEC2 0x8B53
|
||||
#define GL_INT_VEC3 0x8B54
|
||||
#define GL_INT_VEC4 0x8B55
|
||||
#define GL_BOOL 0x8B56
|
||||
#define GL_BOOL_VEC2 0x8B57
|
||||
#define GL_BOOL_VEC3 0x8B58
|
||||
#define GL_BOOL_VEC4 0x8B59
|
||||
#define GL_FLOAT_MAT2 0x8B5A
|
||||
#define GL_FLOAT_MAT3 0x8B5B
|
||||
#define GL_FLOAT_MAT4 0x8B5C
|
||||
#define GL_SAMPLER_2D 0x8B5E
|
||||
#define GL_SAMPLER_CUBE 0x8B60
|
||||
|
||||
/* Vertex Arrays */
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
|
||||
|
||||
/* Read Format */
|
||||
#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
|
||||
#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
|
||||
|
||||
/* Shader Source */
|
||||
#define GL_COMPILE_STATUS 0x8B81
|
||||
#define GL_INFO_LOG_LENGTH 0x8B84
|
||||
#define GL_SHADER_SOURCE_LENGTH 0x8B88
|
||||
#define GL_SHADER_COMPILER 0x8DFA
|
||||
|
||||
/* Shader Binary */
|
||||
#define GL_SHADER_BINARY_FORMATS 0x8DF8
|
||||
#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9
|
||||
|
||||
/* Shader Precision-Specified Types */
|
||||
#define GL_LOW_FLOAT 0x8DF0
|
||||
#define GL_MEDIUM_FLOAT 0x8DF1
|
||||
#define GL_HIGH_FLOAT 0x8DF2
|
||||
#define GL_LOW_INT 0x8DF3
|
||||
#define GL_MEDIUM_INT 0x8DF4
|
||||
#define GL_HIGH_INT 0x8DF5
|
||||
|
||||
/* Framebuffer Object. */
|
||||
#define GL_FRAMEBUFFER 0x8D40
|
||||
#define GL_RENDERBUFFER 0x8D41
|
||||
|
||||
#define GL_RGBA4 0x8056
|
||||
#define GL_RGB5_A1 0x8057
|
||||
#define GL_RGB565 0x8D62
|
||||
#define GL_DEPTH_COMPONENT16 0x81A5
|
||||
#define GL_STENCIL_INDEX8 0x8D48
|
||||
|
||||
#define GL_RENDERBUFFER_WIDTH 0x8D42
|
||||
#define GL_RENDERBUFFER_HEIGHT 0x8D43
|
||||
#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44
|
||||
#define GL_RENDERBUFFER_RED_SIZE 0x8D50
|
||||
#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51
|
||||
#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52
|
||||
#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53
|
||||
#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54
|
||||
#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55
|
||||
|
||||
#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
|
||||
#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
|
||||
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
|
||||
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
|
||||
|
||||
#define GL_COLOR_ATTACHMENT0 0x8CE0
|
||||
#define GL_DEPTH_ATTACHMENT 0x8D00
|
||||
#define GL_STENCIL_ATTACHMENT 0x8D20
|
||||
|
||||
#define GL_NONE 0
|
||||
|
||||
#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
|
||||
#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
|
||||
#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
|
||||
#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9
|
||||
#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
|
||||
|
||||
#define GL_FRAMEBUFFER_BINDING 0x8CA6
|
||||
#define GL_RENDERBUFFER_BINDING 0x8CA7
|
||||
#define GL_MAX_RENDERBUFFER_SIZE 0x84E8
|
||||
|
||||
#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* GL core functions.
|
||||
*-----------------------------------------------------------------------*/
|
||||
|
||||
GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture);
|
||||
GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader);
|
||||
GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar* name);
|
||||
GL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer);
|
||||
GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);
|
||||
GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);
|
||||
GL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture);
|
||||
GL_APICALL void GL_APIENTRY glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
|
||||
GL_APICALL void GL_APIENTRY glBlendEquation ( GLenum mode );
|
||||
GL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
|
||||
GL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
|
||||
GL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
|
||||
GL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
|
||||
GL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
|
||||
GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target);
|
||||
GL_APICALL void GL_APIENTRY glClear (GLbitfield mask);
|
||||
GL_APICALL void GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
|
||||
GL_APICALL void GL_APIENTRY glClearDepthf (GLclampf depth);
|
||||
GL_APICALL void GL_APIENTRY glClearStencil (GLint s);
|
||||
GL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
|
||||
GL_APICALL void GL_APIENTRY glCompileShader (GLuint shader);
|
||||
GL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data);
|
||||
GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data);
|
||||
GL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
|
||||
GL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
GL_APICALL GLuint GL_APIENTRY glCreateProgram (void);
|
||||
GL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type);
|
||||
GL_APICALL void GL_APIENTRY glCullFace (GLenum mode);
|
||||
GL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint* buffers);
|
||||
GL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint* framebuffers);
|
||||
GL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program);
|
||||
GL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint* renderbuffers);
|
||||
GL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader);
|
||||
GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint* textures);
|
||||
GL_APICALL void GL_APIENTRY glDepthFunc (GLenum func);
|
||||
GL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag);
|
||||
GL_APICALL void GL_APIENTRY glDepthRangef (GLclampf zNear, GLclampf zFar);
|
||||
GL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader);
|
||||
GL_APICALL void GL_APIENTRY glDisable (GLenum cap);
|
||||
GL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index);
|
||||
GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
|
||||
GL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
|
||||
GL_APICALL void GL_APIENTRY glEnable (GLenum cap);
|
||||
GL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index);
|
||||
GL_APICALL void GL_APIENTRY glFinish (void);
|
||||
GL_APICALL void GL_APIENTRY glFlush (void);
|
||||
GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
|
||||
GL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
|
||||
GL_APICALL void GL_APIENTRY glFrontFace (GLenum mode);
|
||||
GL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint* buffers);
|
||||
GL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target);
|
||||
GL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint* framebuffers);
|
||||
GL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint* renderbuffers);
|
||||
GL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint* textures);
|
||||
GL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
|
||||
GL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
|
||||
GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
|
||||
GL_APICALL GLint GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar* name);
|
||||
GL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean* params);
|
||||
GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params);
|
||||
GL_APICALL GLenum GL_APIENTRY glGetError (void);
|
||||
GL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat* params);
|
||||
GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params);
|
||||
GL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint* params);
|
||||
GL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint* params);
|
||||
GL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);
|
||||
GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params);
|
||||
GL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint* params);
|
||||
GL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog);
|
||||
GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
|
||||
GL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
|
||||
GL_APICALL const GLubyte* GL_APIENTRY glGetString (GLenum name);
|
||||
GL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat* params);
|
||||
GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint* params);
|
||||
GL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat* params);
|
||||
GL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint* params);
|
||||
GL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar* name);
|
||||
GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params);
|
||||
GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params);
|
||||
GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid** pointer);
|
||||
GL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture);
|
||||
GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width);
|
||||
GL_APICALL void GL_APIENTRY glLinkProgram (GLuint program);
|
||||
GL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param);
|
||||
GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units);
|
||||
GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
|
||||
GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void);
|
||||
GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
|
||||
GL_APICALL void GL_APIENTRY glSampleCoverage (GLclampf value, GLboolean invert);
|
||||
GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length);
|
||||
GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length);
|
||||
GL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);
|
||||
GL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
|
||||
GL_APICALL void GL_APIENTRY glStencilMask (GLuint mask);
|
||||
GL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);
|
||||
GL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
|
||||
GL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
|
||||
GL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
|
||||
GL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
|
||||
GL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat* params);
|
||||
GL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
|
||||
GL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint* params);
|
||||
GL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
|
||||
GL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat x);
|
||||
GL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat* v);
|
||||
GL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint x);
|
||||
GL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint* v);
|
||||
GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat x, GLfloat y);
|
||||
GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat* v);
|
||||
GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint x, GLint y);
|
||||
GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint* v);
|
||||
GL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat x, GLfloat y, GLfloat z);
|
||||
GL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat* v);
|
||||
GL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint x, GLint y, GLint z);
|
||||
GL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint* v);
|
||||
GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
||||
GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat* v);
|
||||
GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint x, GLint y, GLint z, GLint w);
|
||||
GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint* v);
|
||||
GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
|
||||
GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
|
||||
GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
|
||||
GL_APICALL void GL_APIENTRY glUseProgram (GLuint program);
|
||||
GL_APICALL void GL_APIENTRY glValidateProgram (GLuint program);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint indx, GLfloat x);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint indx, const GLfloat* values);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint indx, GLfloat x, GLfloat y);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint indx, const GLfloat* values);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint indx, GLfloat x, GLfloat y, GLfloat z);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint indx, const GLfloat* values);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint indx, const GLfloat* values);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
|
||||
GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __gl2_h_ */
|
|
@ -1,30 +0,0 @@
|
|||
#ifndef __gl2platform_h_
|
||||
#define __gl2platform_h_
|
||||
|
||||
/* $Revision: 10602 $ on $Date:: 2010-03-04 22:35:34 -0800 #$ */
|
||||
|
||||
/*
|
||||
* This document is licensed under the SGI Free Software B License Version
|
||||
* 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
|
||||
*/
|
||||
|
||||
/* Platform-specific types and definitions for OpenGL ES 2.X gl2.h
|
||||
*
|
||||
* Adopters may modify khrplatform.h and this file to suit their platform.
|
||||
* You are encouraged to submit all modifications to the Khronos group so that
|
||||
* they can be included in future versions of this file. Please submit changes
|
||||
* by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla)
|
||||
* by filing a bug against product "OpenGL-ES" component "Registry".
|
||||
*/
|
||||
|
||||
#include <KHR/khrplatform.h>
|
||||
|
||||
#ifndef GL_APICALL
|
||||
#define GL_APICALL KHRONOS_APICALL
|
||||
#endif
|
||||
|
||||
#ifndef GL_APIENTRY
|
||||
#define GL_APIENTRY KHRONOS_APIENTRY
|
||||
#endif
|
||||
|
||||
#endif /* __gl2platform_h_ */
|
|
@ -1,24 +0,0 @@
|
|||
#ifndef __gl3ext_h_
|
||||
#define __gl3ext_h_
|
||||
|
||||
/* $Revision: 17809 $ on $Date:: 2012-05-14 08:03:36 -0700 #$ */
|
||||
|
||||
/*
|
||||
* This document is licensed under the SGI Free Software B License Version
|
||||
* 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
|
||||
*/
|
||||
|
||||
/* OpenGL ES 3 Extensions
|
||||
*
|
||||
* After an OES extension's interactions with OpenGl ES 3.0 have been documented,
|
||||
* its tokens and function definitions should be added to this file in a manner
|
||||
* that does not conflict with gl2ext.h or gl3.h.
|
||||
*
|
||||
* Tokens and function definitions for extensions that have become standard
|
||||
* features in OpenGL ES 3.0 will not be added to this file.
|
||||
*
|
||||
* Applications using OpenGL-ES-2-only extensions should include gl2ext.h
|
||||
*/
|
||||
|
||||
#endif /* __gl3ext_h_ */
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
#ifndef __gl3platform_h_
|
||||
#define __gl3platform_h_
|
||||
|
||||
/* $Revision: 18437 $ on $Date:: 2012-07-08 23:31:39 -0700 #$ */
|
||||
|
||||
/*
|
||||
* This document is licensed under the SGI Free Software B License Version
|
||||
* 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
|
||||
*/
|
||||
|
||||
/* Platform-specific types and definitions for OpenGL ES 3.X gl3.h
|
||||
*
|
||||
* Adopters may modify khrplatform.h and this file to suit their platform.
|
||||
* You are encouraged to submit all modifications to the Khronos group so that
|
||||
* they can be included in future versions of this file. Please submit changes
|
||||
* by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla)
|
||||
* by filing a bug against product "OpenGL-ES" component "Registry".
|
||||
*/
|
||||
|
||||
#include <KHR/khrplatform.h>
|
||||
|
||||
#ifndef GL_APICALL
|
||||
#define GL_APICALL KHRONOS_APICALL
|
||||
#endif
|
||||
|
||||
#ifndef GL_APIENTRY
|
||||
#define GL_APIENTRY KHRONOS_APIENTRY
|
||||
#endif
|
||||
|
||||
#endif /* __gl3platform_h_ */
|
|
@ -1,411 +0,0 @@
|
|||
//
|
||||
// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
//
|
||||
#ifndef _COMPILER_INTERFACE_INCLUDED_
|
||||
#define _COMPILER_INTERFACE_INCLUDED_
|
||||
|
||||
#if defined(COMPONENT_BUILD) && !defined(ANGLE_TRANSLATOR_STATIC)
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
|
||||
#if defined(ANGLE_TRANSLATOR_IMPLEMENTATION)
|
||||
#define COMPILER_EXPORT __declspec(dllexport)
|
||||
#else
|
||||
#define COMPILER_EXPORT __declspec(dllimport)
|
||||
#endif // defined(ANGLE_TRANSLATOR_IMPLEMENTATION)
|
||||
|
||||
#else // defined(_WIN32) || defined(_WIN64)
|
||||
#define COMPILER_EXPORT __attribute__((visibility("default")))
|
||||
#endif
|
||||
|
||||
#else // defined(COMPONENT_BUILD) && !defined(ANGLE_TRANSLATOR_STATIC)
|
||||
#define COMPILER_EXPORT
|
||||
#endif
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#include "KHR/khrplatform.h"
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
//
|
||||
// This is the platform independent interface between an OGL driver
|
||||
// and the shading language compiler.
|
||||
//
|
||||
|
||||
namespace sh
|
||||
{
|
||||
// GLenum alias
|
||||
typedef unsigned int GLenum;
|
||||
}
|
||||
|
||||
// Must be included after GLenum proxy typedef
|
||||
// Note: make sure to increment ANGLE_SH_VERSION when changing ShaderVars.h
|
||||
#include "ShaderVars.h"
|
||||
|
||||
// Version number for shader translation API.
|
||||
// It is incremented every time the API changes.
|
||||
#define ANGLE_SH_VERSION 132
|
||||
|
||||
typedef enum {
|
||||
SH_GLES2_SPEC = 0x8B40,
|
||||
SH_WEBGL_SPEC = 0x8B41,
|
||||
|
||||
SH_GLES3_SPEC = 0x8B86,
|
||||
SH_WEBGL2_SPEC = 0x8B87,
|
||||
|
||||
// The CSS Shaders spec is a subset of the WebGL spec.
|
||||
//
|
||||
// In both CSS vertex and fragment shaders, ANGLE:
|
||||
// (1) Reserves the "css_" prefix.
|
||||
// (2) Renames the main function to css_main.
|
||||
// (3) Disables the gl_MaxDrawBuffers built-in.
|
||||
//
|
||||
// In CSS fragment shaders, ANGLE:
|
||||
// (1) Disables the gl_FragColor built-in.
|
||||
// (2) Disables the gl_FragData built-in.
|
||||
// (3) Enables the css_MixColor built-in.
|
||||
// (4) Enables the css_ColorMatrix built-in.
|
||||
//
|
||||
// After passing a CSS shader through ANGLE, the browser is expected to append
|
||||
// a new main function to it.
|
||||
// This new main function will call the css_main function.
|
||||
// It may also perform additional operations like varying assignment, texture
|
||||
// access, and gl_FragColor assignment in order to implement the CSS Shaders
|
||||
// blend modes.
|
||||
//
|
||||
SH_CSS_SHADERS_SPEC = 0x8B42
|
||||
} ShShaderSpec;
|
||||
|
||||
typedef enum {
|
||||
SH_ESSL_OUTPUT = 0x8B45,
|
||||
SH_GLSL_OUTPUT = 0x8B46,
|
||||
SH_HLSL_OUTPUT = 0x8B47,
|
||||
SH_HLSL9_OUTPUT = 0x8B47,
|
||||
SH_HLSL11_OUTPUT = 0x8B48
|
||||
} ShShaderOutput;
|
||||
|
||||
// Compile options.
|
||||
typedef enum {
|
||||
SH_VALIDATE = 0,
|
||||
SH_VALIDATE_LOOP_INDEXING = 0x0001,
|
||||
SH_INTERMEDIATE_TREE = 0x0002,
|
||||
SH_OBJECT_CODE = 0x0004,
|
||||
SH_VARIABLES = 0x0008,
|
||||
SH_LINE_DIRECTIVES = 0x0010,
|
||||
SH_SOURCE_PATH = 0x0020,
|
||||
SH_UNROLL_FOR_LOOP_WITH_INTEGER_INDEX = 0x0040,
|
||||
// If a sampler array index happens to be a loop index,
|
||||
// 1) if its type is integer, unroll the loop.
|
||||
// 2) if its type is float, fail the shader compile.
|
||||
// This is to work around a mac driver bug.
|
||||
SH_UNROLL_FOR_LOOP_WITH_SAMPLER_ARRAY_INDEX = 0x0080,
|
||||
|
||||
// This is needed only as a workaround for certain OpenGL driver bugs.
|
||||
SH_EMULATE_BUILT_IN_FUNCTIONS = 0x0100,
|
||||
|
||||
// This is an experimental flag to enforce restrictions that aim to prevent
|
||||
// timing attacks.
|
||||
// It generates compilation errors for shaders that could expose sensitive
|
||||
// texture information via the timing channel.
|
||||
// To use this flag, you must compile the shader under the WebGL spec
|
||||
// (using the SH_WEBGL_SPEC flag).
|
||||
SH_TIMING_RESTRICTIONS = 0x0200,
|
||||
|
||||
// This flag prints the dependency graph that is used to enforce timing
|
||||
// restrictions on fragment shaders.
|
||||
// This flag only has an effect if all of the following are true:
|
||||
// - The shader spec is SH_WEBGL_SPEC.
|
||||
// - The compile options contain the SH_TIMING_RESTRICTIONS flag.
|
||||
// - The shader type is GL_FRAGMENT_SHADER.
|
||||
SH_DEPENDENCY_GRAPH = 0x0400,
|
||||
|
||||
// Enforce the GLSL 1.017 Appendix A section 7 packing restrictions.
|
||||
// This flag only enforces (and can only enforce) the packing
|
||||
// restrictions for uniform variables in both vertex and fragment
|
||||
// shaders. ShCheckVariablesWithinPackingLimits() lets embedders
|
||||
// enforce the packing restrictions for varying variables during
|
||||
// program link time.
|
||||
SH_ENFORCE_PACKING_RESTRICTIONS = 0x0800,
|
||||
|
||||
// This flag ensures all indirect (expression-based) array indexing
|
||||
// is clamped to the bounds of the array. This ensures, for example,
|
||||
// that you cannot read off the end of a uniform, whether an array
|
||||
// vec234, or mat234 type. The ShArrayIndexClampingStrategy enum,
|
||||
// specified in the ShBuiltInResources when constructing the
|
||||
// compiler, selects the strategy for the clamping implementation.
|
||||
SH_CLAMP_INDIRECT_ARRAY_BOUNDS = 0x1000,
|
||||
|
||||
// This flag limits the complexity of an expression.
|
||||
SH_LIMIT_EXPRESSION_COMPLEXITY = 0x2000,
|
||||
|
||||
// This flag limits the depth of the call stack.
|
||||
SH_LIMIT_CALL_STACK_DEPTH = 0x4000,
|
||||
|
||||
// This flag initializes gl_Position to vec4(0,0,0,0) at the
|
||||
// beginning of the vertex shader's main(), and has no effect in the
|
||||
// fragment shader. It is intended as a workaround for drivers which
|
||||
// incorrectly fail to link programs if gl_Position is not written.
|
||||
SH_INIT_GL_POSITION = 0x8000,
|
||||
|
||||
// This flag replaces
|
||||
// "a && b" with "a ? b : false",
|
||||
// "a || b" with "a ? true : b".
|
||||
// This is to work around a MacOSX driver bug that |b| is executed
|
||||
// independent of |a|'s value.
|
||||
SH_UNFOLD_SHORT_CIRCUIT = 0x10000,
|
||||
|
||||
// This flag initializes varyings without static use in vertex shader
|
||||
// at the beginning of main(), and has no effects in the fragment shader.
|
||||
// It is intended as a workaround for drivers which incorrectly optimize
|
||||
// out such varyings and cause a link failure.
|
||||
SH_INIT_VARYINGS_WITHOUT_STATIC_USE = 0x20000,
|
||||
|
||||
// This flag scalarizes vec/ivec/bvec/mat constructor args.
|
||||
// It is intended as a workaround for Linux/Mac driver bugs.
|
||||
SH_SCALARIZE_VEC_AND_MAT_CONSTRUCTOR_ARGS = 0x40000,
|
||||
|
||||
// This flag overwrites a struct name with a unique prefix.
|
||||
// It is intended as a workaround for drivers that do not handle
|
||||
// struct scopes correctly, including all Mac drivers and Linux AMD.
|
||||
SH_REGENERATE_STRUCT_NAMES = 0x80000,
|
||||
} ShCompileOptions;
|
||||
|
||||
// Defines alternate strategies for implementing array index clamping.
|
||||
typedef enum {
|
||||
// Use the clamp intrinsic for array index clamping.
|
||||
SH_CLAMP_WITH_CLAMP_INTRINSIC = 1,
|
||||
|
||||
// Use a user-defined function for array index clamping.
|
||||
SH_CLAMP_WITH_USER_DEFINED_INT_CLAMP_FUNCTION
|
||||
} ShArrayIndexClampingStrategy;
|
||||
|
||||
//
|
||||
// Driver must call this first, once, before doing any other
|
||||
// compiler operations.
|
||||
// If the function succeeds, the return value is true, else false.
|
||||
//
|
||||
COMPILER_EXPORT bool ShInitialize();
|
||||
//
|
||||
// Driver should call this at shutdown.
|
||||
// If the function succeeds, the return value is true, else false.
|
||||
//
|
||||
COMPILER_EXPORT bool ShFinalize();
|
||||
|
||||
// The 64 bits hash function. The first parameter is the input string; the
|
||||
// second parameter is the string length.
|
||||
typedef khronos_uint64_t (*ShHashFunction64)(const char*, size_t);
|
||||
|
||||
//
|
||||
// Implementation dependent built-in resources (constants and extensions).
|
||||
// The names for these resources has been obtained by stripping gl_/GL_.
|
||||
//
|
||||
typedef struct
|
||||
{
|
||||
// Constants.
|
||||
int MaxVertexAttribs;
|
||||
int MaxVertexUniformVectors;
|
||||
int MaxVaryingVectors;
|
||||
int MaxVertexTextureImageUnits;
|
||||
int MaxCombinedTextureImageUnits;
|
||||
int MaxTextureImageUnits;
|
||||
int MaxFragmentUniformVectors;
|
||||
int MaxDrawBuffers;
|
||||
|
||||
// Extensions.
|
||||
// Set to 1 to enable the extension, else 0.
|
||||
int OES_standard_derivatives;
|
||||
int OES_EGL_image_external;
|
||||
int ARB_texture_rectangle;
|
||||
int EXT_draw_buffers;
|
||||
int EXT_frag_depth;
|
||||
int EXT_shader_texture_lod;
|
||||
|
||||
// Set to 1 to enable replacing GL_EXT_draw_buffers #extension directives
|
||||
// with GL_NV_draw_buffers in ESSL output. This flag can be used to emulate
|
||||
// EXT_draw_buffers by using it in combination with GLES3.0 glDrawBuffers
|
||||
// function. This applies to Tegra K1 devices.
|
||||
int NV_draw_buffers;
|
||||
|
||||
// Set to 1 if highp precision is supported in the fragment language.
|
||||
// Default is 0.
|
||||
int FragmentPrecisionHigh;
|
||||
|
||||
// GLSL ES 3.0 constants.
|
||||
int MaxVertexOutputVectors;
|
||||
int MaxFragmentInputVectors;
|
||||
int MinProgramTexelOffset;
|
||||
int MaxProgramTexelOffset;
|
||||
|
||||
// Name Hashing.
|
||||
// Set a 64 bit hash function to enable user-defined name hashing.
|
||||
// Default is NULL.
|
||||
ShHashFunction64 HashFunction;
|
||||
|
||||
// Selects a strategy to use when implementing array index clamping.
|
||||
// Default is SH_CLAMP_WITH_CLAMP_INTRINSIC.
|
||||
ShArrayIndexClampingStrategy ArrayIndexClampingStrategy;
|
||||
|
||||
// The maximum complexity an expression can be.
|
||||
int MaxExpressionComplexity;
|
||||
|
||||
// The maximum depth a call stack can be.
|
||||
int MaxCallStackDepth;
|
||||
} ShBuiltInResources;
|
||||
|
||||
//
|
||||
// Initialize built-in resources with minimum expected values.
|
||||
// Parameters:
|
||||
// resources: The object to initialize. Will be comparable with memcmp.
|
||||
//
|
||||
COMPILER_EXPORT void ShInitBuiltInResources(ShBuiltInResources *resources);
|
||||
|
||||
//
|
||||
// ShHandle held by but opaque to the driver. It is allocated,
|
||||
// managed, and de-allocated by the compiler. Its contents
|
||||
// are defined by and used by the compiler.
|
||||
//
|
||||
// If handle creation fails, 0 will be returned.
|
||||
//
|
||||
typedef void *ShHandle;
|
||||
|
||||
//
|
||||
// Returns the a concatenated list of the items in ShBuiltInResources as a
|
||||
// null-terminated string.
|
||||
// This function must be updated whenever ShBuiltInResources is changed.
|
||||
// Parameters:
|
||||
// handle: Specifies the handle of the compiler to be used.
|
||||
COMPILER_EXPORT const std::string &ShGetBuiltInResourcesString(const ShHandle handle);
|
||||
|
||||
//
|
||||
// Driver calls these to create and destroy compiler objects.
|
||||
//
|
||||
// Returns the handle of constructed compiler, null if the requested compiler is
|
||||
// not supported.
|
||||
// Parameters:
|
||||
// type: Specifies the type of shader - GL_FRAGMENT_SHADER or GL_VERTEX_SHADER.
|
||||
// spec: Specifies the language spec the compiler must conform to -
|
||||
// SH_GLES2_SPEC or SH_WEBGL_SPEC.
|
||||
// output: Specifies the output code type - SH_ESSL_OUTPUT, SH_GLSL_OUTPUT,
|
||||
// SH_HLSL9_OUTPUT or SH_HLSL11_OUTPUT.
|
||||
// resources: Specifies the built-in resources.
|
||||
COMPILER_EXPORT ShHandle ShConstructCompiler(
|
||||
sh::GLenum type,
|
||||
ShShaderSpec spec,
|
||||
ShShaderOutput output,
|
||||
const ShBuiltInResources *resources);
|
||||
COMPILER_EXPORT void ShDestruct(ShHandle handle);
|
||||
|
||||
//
|
||||
// Compiles the given shader source.
|
||||
// If the function succeeds, the return value is true, else false.
|
||||
// Parameters:
|
||||
// handle: Specifies the handle of compiler to be used.
|
||||
// shaderStrings: Specifies an array of pointers to null-terminated strings
|
||||
// containing the shader source code.
|
||||
// numStrings: Specifies the number of elements in shaderStrings array.
|
||||
// compileOptions: A mask containing the following parameters:
|
||||
// SH_VALIDATE: Validates shader to ensure that it conforms to the spec
|
||||
// specified during compiler construction.
|
||||
// SH_VALIDATE_LOOP_INDEXING: Validates loop and indexing in the shader to
|
||||
// ensure that they do not exceed the minimum
|
||||
// functionality mandated in GLSL 1.0 spec,
|
||||
// Appendix A, Section 4 and 5.
|
||||
// There is no need to specify this parameter when
|
||||
// compiling for WebGL - it is implied.
|
||||
// SH_INTERMEDIATE_TREE: Writes intermediate tree to info log.
|
||||
// Can be queried by calling ShGetInfoLog().
|
||||
// SH_OBJECT_CODE: Translates intermediate tree to glsl or hlsl shader.
|
||||
// Can be queried by calling ShGetObjectCode().
|
||||
// SH_VARIABLES: Extracts attributes, uniforms, and varyings.
|
||||
// Can be queried by calling ShGetVariableInfo().
|
||||
//
|
||||
COMPILER_EXPORT bool ShCompile(
|
||||
const ShHandle handle,
|
||||
const char * const shaderStrings[],
|
||||
size_t numStrings,
|
||||
int compileOptions);
|
||||
|
||||
// Return the version of the shader language.
|
||||
COMPILER_EXPORT int ShGetShaderVersion(const ShHandle handle);
|
||||
|
||||
// Return the currently set language output type.
|
||||
COMPILER_EXPORT ShShaderOutput ShGetShaderOutputType(
|
||||
const ShHandle handle);
|
||||
|
||||
// Returns null-terminated information log for a compiled shader.
|
||||
// Parameters:
|
||||
// handle: Specifies the compiler
|
||||
COMPILER_EXPORT const std::string &ShGetInfoLog(const ShHandle handle);
|
||||
|
||||
// Returns null-terminated object code for a compiled shader.
|
||||
// Parameters:
|
||||
// handle: Specifies the compiler
|
||||
COMPILER_EXPORT const std::string &ShGetObjectCode(const ShHandle handle);
|
||||
|
||||
// Returns a (original_name, hash) map containing all the user defined
|
||||
// names in the shader, including variable names, function names, struct
|
||||
// names, and struct field names.
|
||||
// Parameters:
|
||||
// handle: Specifies the compiler
|
||||
COMPILER_EXPORT const std::map<std::string, std::string> *ShGetNameHashingMap(
|
||||
const ShHandle handle);
|
||||
|
||||
// Shader variable inspection.
|
||||
// Returns a pointer to a list of variables of the designated type.
|
||||
// (See ShaderVars.h for type definitions, included above)
|
||||
// Returns NULL on failure.
|
||||
// Parameters:
|
||||
// handle: Specifies the compiler
|
||||
COMPILER_EXPORT const std::vector<sh::Uniform> *ShGetUniforms(const ShHandle handle);
|
||||
COMPILER_EXPORT const std::vector<sh::Varying> *ShGetVaryings(const ShHandle handle);
|
||||
COMPILER_EXPORT const std::vector<sh::Attribute> *ShGetAttributes(const ShHandle handle);
|
||||
COMPILER_EXPORT const std::vector<sh::Attribute> *ShGetOutputVariables(const ShHandle handle);
|
||||
COMPILER_EXPORT const std::vector<sh::InterfaceBlock> *ShGetInterfaceBlocks(const ShHandle handle);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
sh::GLenum type;
|
||||
int size;
|
||||
} ShVariableInfo;
|
||||
|
||||
// Returns true if the passed in variables pack in maxVectors following
|
||||
// the packing rules from the GLSL 1.017 spec, Appendix A, section 7.
|
||||
// Returns false otherwise. Also look at the SH_ENFORCE_PACKING_RESTRICTIONS
|
||||
// flag above.
|
||||
// Parameters:
|
||||
// maxVectors: the available rows of registers.
|
||||
// varInfoArray: an array of variable info (types and sizes).
|
||||
// varInfoArraySize: the size of the variable array.
|
||||
COMPILER_EXPORT bool ShCheckVariablesWithinPackingLimits(
|
||||
int maxVectors,
|
||||
ShVariableInfo *varInfoArray,
|
||||
size_t varInfoArraySize);
|
||||
|
||||
// Gives the compiler-assigned register for an interface block.
|
||||
// The method writes the value to the output variable "indexOut".
|
||||
// Returns true if it found a valid interface block, false otherwise.
|
||||
// Parameters:
|
||||
// handle: Specifies the compiler
|
||||
// interfaceBlockName: Specifies the interface block
|
||||
// indexOut: output variable that stores the assigned register
|
||||
COMPILER_EXPORT bool ShGetInterfaceBlockRegister(const ShHandle handle,
|
||||
const std::string &interfaceBlockName,
|
||||
unsigned int *indexOut);
|
||||
|
||||
// Gives the compiler-assigned register for uniforms in the default
|
||||
// interface block.
|
||||
// The method writes the value to the output variable "indexOut".
|
||||
// Returns true if it found a valid default uniform, false otherwise.
|
||||
// Parameters:
|
||||
// handle: Specifies the compiler
|
||||
// interfaceBlockName: Specifies the uniform
|
||||
// indexOut: output variable that stores the assigned register
|
||||
COMPILER_EXPORT bool ShGetUniformRegister(const ShHandle handle,
|
||||
const std::string &uniformName,
|
||||
unsigned int *indexOut);
|
||||
|
||||
#endif // _COMPILER_INTERFACE_INCLUDED_
|
|
@ -1,185 +0,0 @@
|
|||
//
|
||||
// Copyright (c) 2013-2014 The ANGLE Project Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
//
|
||||
// ShaderVars.h:
|
||||
// Types to represent GL variables (varyings, uniforms, etc)
|
||||
//
|
||||
|
||||
#ifndef _COMPILER_INTERFACE_VARIABLES_
|
||||
#define _COMPILER_INTERFACE_VARIABLES_
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
|
||||
// Assume ShaderLang.h is included before ShaderVars.h, for sh::GLenum
|
||||
// Note: make sure to increment ANGLE_SH_VERSION when changing ShaderVars.h
|
||||
|
||||
namespace sh
|
||||
{
|
||||
|
||||
// Varying interpolation qualifier, see section 4.3.9 of the ESSL 3.00.4 spec
|
||||
enum InterpolationType
|
||||
{
|
||||
INTERPOLATION_SMOOTH,
|
||||
INTERPOLATION_CENTROID,
|
||||
INTERPOLATION_FLAT
|
||||
};
|
||||
|
||||
// Uniform block layout qualifier, see section 4.3.8.3 of the ESSL 3.00.4 spec
|
||||
enum BlockLayoutType
|
||||
{
|
||||
BLOCKLAYOUT_STANDARD,
|
||||
BLOCKLAYOUT_PACKED,
|
||||
BLOCKLAYOUT_SHARED
|
||||
};
|
||||
|
||||
// Base class for all variables defined in shaders, including Varyings, Uniforms, etc
|
||||
// Note: we must override the copy constructor and assignment operator so we can
|
||||
// work around excessive GCC binary bloating:
|
||||
// See https://code.google.com/p/angleproject/issues/detail?id=697
|
||||
struct COMPILER_EXPORT ShaderVariable
|
||||
{
|
||||
ShaderVariable();
|
||||
ShaderVariable(GLenum typeIn, unsigned int arraySizeIn);
|
||||
~ShaderVariable();
|
||||
ShaderVariable(const ShaderVariable &other);
|
||||
ShaderVariable &operator=(const ShaderVariable &other);
|
||||
|
||||
bool isArray() const { return arraySize > 0; }
|
||||
unsigned int elementCount() const { return std::max(1u, arraySize); }
|
||||
bool isStruct() const { return !fields.empty(); }
|
||||
|
||||
// All of the shader's variables are described using nested data
|
||||
// structures. This is needed in order to disambiguate similar looking
|
||||
// types, such as two structs containing the same fields, but in
|
||||
// different orders. "findInfoByMappedName" provides an easy query for
|
||||
// users to dive into the data structure and fetch the unique variable
|
||||
// instance corresponding to a dereferencing chain of the top-level
|
||||
// variable.
|
||||
// Given a mapped name like 'a[0].b.c[0]', return the ShaderVariable
|
||||
// that defines 'c' in |leafVar|, and the original name 'A[0].B.C[0]'
|
||||
// in |originalName|, based on the assumption that |this| defines 'a'.
|
||||
// If no match is found, return false.
|
||||
bool findInfoByMappedName(const std::string &mappedFullName,
|
||||
const ShaderVariable **leafVar,
|
||||
std::string* originalFullName) const;
|
||||
|
||||
GLenum type;
|
||||
GLenum precision;
|
||||
std::string name;
|
||||
std::string mappedName;
|
||||
unsigned int arraySize;
|
||||
bool staticUse;
|
||||
std::vector<ShaderVariable> fields;
|
||||
std::string structName;
|
||||
|
||||
protected:
|
||||
bool isSameVariableAtLinkTime(const ShaderVariable &other,
|
||||
bool matchPrecision) const;
|
||||
|
||||
bool operator==(const ShaderVariable &other) const;
|
||||
bool operator!=(const ShaderVariable &other) const
|
||||
{
|
||||
return !operator==(other);
|
||||
}
|
||||
};
|
||||
|
||||
struct COMPILER_EXPORT Uniform : public ShaderVariable
|
||||
{
|
||||
Uniform();
|
||||
~Uniform();
|
||||
Uniform(const Uniform &other);
|
||||
Uniform &operator=(const Uniform &other);
|
||||
bool operator==(const Uniform &other) const;
|
||||
bool operator!=(const Uniform &other) const
|
||||
{
|
||||
return !operator==(other);
|
||||
}
|
||||
|
||||
// Decide whether two uniforms are the same at shader link time,
|
||||
// assuming one from vertex shader and the other from fragment shader.
|
||||
// See GLSL ES Spec 3.00.3, sec 4.3.5.
|
||||
bool isSameUniformAtLinkTime(const Uniform &other) const;
|
||||
};
|
||||
|
||||
struct COMPILER_EXPORT Attribute : public ShaderVariable
|
||||
{
|
||||
Attribute();
|
||||
~Attribute();
|
||||
Attribute(const Attribute &other);
|
||||
Attribute &operator=(const Attribute &other);
|
||||
bool operator==(const Attribute &other) const;
|
||||
bool operator!=(const Attribute &other) const
|
||||
{
|
||||
return !operator==(other);
|
||||
}
|
||||
|
||||
int location;
|
||||
};
|
||||
|
||||
struct COMPILER_EXPORT InterfaceBlockField : public ShaderVariable
|
||||
{
|
||||
InterfaceBlockField();
|
||||
~InterfaceBlockField();
|
||||
InterfaceBlockField(const InterfaceBlockField &other);
|
||||
InterfaceBlockField &operator=(const InterfaceBlockField &other);
|
||||
bool operator==(const InterfaceBlockField &other) const;
|
||||
bool operator!=(const InterfaceBlockField &other) const
|
||||
{
|
||||
return !operator==(other);
|
||||
}
|
||||
|
||||
// Decide whether two InterfaceBlock fields are the same at shader
|
||||
// link time, assuming one from vertex shader and the other from
|
||||
// fragment shader.
|
||||
// See GLSL ES Spec 3.00.3, sec 4.3.7.
|
||||
bool isSameInterfaceBlockFieldAtLinkTime(
|
||||
const InterfaceBlockField &other) const;
|
||||
|
||||
bool isRowMajorLayout;
|
||||
};
|
||||
|
||||
struct COMPILER_EXPORT Varying : public ShaderVariable
|
||||
{
|
||||
Varying();
|
||||
~Varying();
|
||||
Varying(const Varying &otherg);
|
||||
Varying &operator=(const Varying &other);
|
||||
bool operator==(const Varying &other) const;
|
||||
bool operator!=(const Varying &other) const
|
||||
{
|
||||
return !operator==(other);
|
||||
}
|
||||
|
||||
// Decide whether two varyings are the same at shader link time,
|
||||
// assuming one from vertex shader and the other from fragment shader.
|
||||
// See GLSL ES Spec 3.00.3, sec 4.3.9.
|
||||
bool isSameVaryingAtLinkTime(const Varying &other) const;
|
||||
|
||||
InterpolationType interpolation;
|
||||
bool isInvariant;
|
||||
};
|
||||
|
||||
struct COMPILER_EXPORT InterfaceBlock
|
||||
{
|
||||
InterfaceBlock();
|
||||
~InterfaceBlock();
|
||||
InterfaceBlock(const InterfaceBlock &other);
|
||||
InterfaceBlock &operator=(const InterfaceBlock &other);
|
||||
|
||||
std::string name;
|
||||
std::string mappedName;
|
||||
std::string instanceName;
|
||||
unsigned int arraySize;
|
||||
BlockLayoutType layout;
|
||||
bool isRowMajorLayout;
|
||||
bool staticUse;
|
||||
std::vector<InterfaceBlockField> fields;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // _COMPILER_INTERFACE_VARIABLES_
|
|
@ -1,282 +0,0 @@
|
|||
#ifndef __khrplatform_h_
|
||||
#define __khrplatform_h_
|
||||
|
||||
/*
|
||||
** Copyright (c) 2008-2009 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a
|
||||
** copy of this software and/or associated documentation files (the
|
||||
** "Materials"), to deal in the Materials without restriction, including
|
||||
** without limitation the rights to use, copy, modify, merge, publish,
|
||||
** distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
** permit persons to whom the Materials are furnished to do so, subject to
|
||||
** the following conditions:
|
||||
**
|
||||
** The above copyright notice and this permission notice shall be included
|
||||
** in all copies or substantial portions of the Materials.
|
||||
**
|
||||
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
*/
|
||||
|
||||
/* Khronos platform-specific types and definitions.
|
||||
*
|
||||
* $Revision: 23298 $ on $Date: 2013-09-30 17:07:13 -0700 (Mon, 30 Sep 2013) $
|
||||
*
|
||||
* Adopters may modify this file to suit their platform. Adopters are
|
||||
* encouraged to submit platform specific modifications to the Khronos
|
||||
* group so that they can be included in future versions of this file.
|
||||
* Please submit changes by sending them to the public Khronos Bugzilla
|
||||
* (http://khronos.org/bugzilla) by filing a bug against product
|
||||
* "Khronos (general)" component "Registry".
|
||||
*
|
||||
* A predefined template which fills in some of the bug fields can be
|
||||
* reached using http://tinyurl.com/khrplatform-h-bugreport, but you
|
||||
* must create a Bugzilla login first.
|
||||
*
|
||||
*
|
||||
* See the Implementer's Guidelines for information about where this file
|
||||
* should be located on your system and for more details of its use:
|
||||
* http://www.khronos.org/registry/implementers_guide.pdf
|
||||
*
|
||||
* This file should be included as
|
||||
* #include <KHR/khrplatform.h>
|
||||
* by Khronos client API header files that use its types and defines.
|
||||
*
|
||||
* The types in khrplatform.h should only be used to define API-specific types.
|
||||
*
|
||||
* Types defined in khrplatform.h:
|
||||
* khronos_int8_t signed 8 bit
|
||||
* khronos_uint8_t unsigned 8 bit
|
||||
* khronos_int16_t signed 16 bit
|
||||
* khronos_uint16_t unsigned 16 bit
|
||||
* khronos_int32_t signed 32 bit
|
||||
* khronos_uint32_t unsigned 32 bit
|
||||
* khronos_int64_t signed 64 bit
|
||||
* khronos_uint64_t unsigned 64 bit
|
||||
* khronos_intptr_t signed same number of bits as a pointer
|
||||
* khronos_uintptr_t unsigned same number of bits as a pointer
|
||||
* khronos_ssize_t signed size
|
||||
* khronos_usize_t unsigned size
|
||||
* khronos_float_t signed 32 bit floating point
|
||||
* khronos_time_ns_t unsigned 64 bit time in nanoseconds
|
||||
* khronos_utime_nanoseconds_t unsigned time interval or absolute time in
|
||||
* nanoseconds
|
||||
* khronos_stime_nanoseconds_t signed time interval in nanoseconds
|
||||
* khronos_boolean_enum_t enumerated boolean type. This should
|
||||
* only be used as a base type when a client API's boolean type is
|
||||
* an enum. Client APIs which use an integer or other type for
|
||||
* booleans cannot use this as the base type for their boolean.
|
||||
*
|
||||
* Tokens defined in khrplatform.h:
|
||||
*
|
||||
* KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
|
||||
*
|
||||
* KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
|
||||
* KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
|
||||
*
|
||||
* Calling convention macros defined in this file:
|
||||
* KHRONOS_APICALL
|
||||
* KHRONOS_APIENTRY
|
||||
* KHRONOS_APIATTRIBUTES
|
||||
*
|
||||
* These may be used in function prototypes as:
|
||||
*
|
||||
* KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
|
||||
* int arg1,
|
||||
* int arg2) KHRONOS_APIATTRIBUTES;
|
||||
*/
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Definition of KHRONOS_APICALL
|
||||
*-------------------------------------------------------------------------
|
||||
* This precedes the return type of the function in the function prototype.
|
||||
*/
|
||||
#if defined(_WIN32) && !defined(__SCITECH_SNAP__)
|
||||
# define KHRONOS_APICALL __declspec(dllimport)
|
||||
#elif defined (__SYMBIAN32__)
|
||||
# define KHRONOS_APICALL IMPORT_C
|
||||
#else
|
||||
# define KHRONOS_APICALL
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Definition of KHRONOS_APIENTRY
|
||||
*-------------------------------------------------------------------------
|
||||
* This follows the return type of the function and precedes the function
|
||||
* name in the function prototype.
|
||||
*/
|
||||
#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
|
||||
/* Win32 but not WinCE */
|
||||
# define KHRONOS_APIENTRY __stdcall
|
||||
#else
|
||||
# define KHRONOS_APIENTRY
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Definition of KHRONOS_APIATTRIBUTES
|
||||
*-------------------------------------------------------------------------
|
||||
* This follows the closing parenthesis of the function prototype arguments.
|
||||
*/
|
||||
#if defined (__ARMCC_2__)
|
||||
#define KHRONOS_APIATTRIBUTES __softfp
|
||||
#else
|
||||
#define KHRONOS_APIATTRIBUTES
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* basic type definitions
|
||||
*-----------------------------------------------------------------------*/
|
||||
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
|
||||
|
||||
|
||||
/*
|
||||
* Using <stdint.h>
|
||||
*/
|
||||
#include <stdint.h>
|
||||
typedef int32_t khronos_int32_t;
|
||||
typedef uint32_t khronos_uint32_t;
|
||||
typedef int64_t khronos_int64_t;
|
||||
typedef uint64_t khronos_uint64_t;
|
||||
#define KHRONOS_SUPPORT_INT64 1
|
||||
#define KHRONOS_SUPPORT_FLOAT 1
|
||||
|
||||
#elif defined(__VMS ) || defined(__sgi)
|
||||
|
||||
/*
|
||||
* Using <inttypes.h>
|
||||
*/
|
||||
#include <inttypes.h>
|
||||
typedef int32_t khronos_int32_t;
|
||||
typedef uint32_t khronos_uint32_t;
|
||||
typedef int64_t khronos_int64_t;
|
||||
typedef uint64_t khronos_uint64_t;
|
||||
#define KHRONOS_SUPPORT_INT64 1
|
||||
#define KHRONOS_SUPPORT_FLOAT 1
|
||||
|
||||
#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
|
||||
|
||||
/*
|
||||
* Win32
|
||||
*/
|
||||
typedef __int32 khronos_int32_t;
|
||||
typedef unsigned __int32 khronos_uint32_t;
|
||||
typedef __int64 khronos_int64_t;
|
||||
typedef unsigned __int64 khronos_uint64_t;
|
||||
#define KHRONOS_SUPPORT_INT64 1
|
||||
#define KHRONOS_SUPPORT_FLOAT 1
|
||||
|
||||
#elif defined(__sun__) || defined(__digital__)
|
||||
|
||||
/*
|
||||
* Sun or Digital
|
||||
*/
|
||||
typedef int khronos_int32_t;
|
||||
typedef unsigned int khronos_uint32_t;
|
||||
#if defined(__arch64__) || defined(_LP64)
|
||||
typedef long int khronos_int64_t;
|
||||
typedef unsigned long int khronos_uint64_t;
|
||||
#else
|
||||
typedef long long int khronos_int64_t;
|
||||
typedef unsigned long long int khronos_uint64_t;
|
||||
#endif /* __arch64__ */
|
||||
#define KHRONOS_SUPPORT_INT64 1
|
||||
#define KHRONOS_SUPPORT_FLOAT 1
|
||||
|
||||
#elif 0
|
||||
|
||||
/*
|
||||
* Hypothetical platform with no float or int64 support
|
||||
*/
|
||||
typedef int khronos_int32_t;
|
||||
typedef unsigned int khronos_uint32_t;
|
||||
#define KHRONOS_SUPPORT_INT64 0
|
||||
#define KHRONOS_SUPPORT_FLOAT 0
|
||||
|
||||
#else
|
||||
|
||||
/*
|
||||
* Generic fallback
|
||||
*/
|
||||
#include <stdint.h>
|
||||
typedef int32_t khronos_int32_t;
|
||||
typedef uint32_t khronos_uint32_t;
|
||||
typedef int64_t khronos_int64_t;
|
||||
typedef uint64_t khronos_uint64_t;
|
||||
#define KHRONOS_SUPPORT_INT64 1
|
||||
#define KHRONOS_SUPPORT_FLOAT 1
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Types that are (so far) the same on all platforms
|
||||
*/
|
||||
typedef signed char khronos_int8_t;
|
||||
typedef unsigned char khronos_uint8_t;
|
||||
typedef signed short int khronos_int16_t;
|
||||
typedef unsigned short int khronos_uint16_t;
|
||||
|
||||
/*
|
||||
* Types that differ between LLP64 and LP64 architectures - in LLP64,
|
||||
* pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
|
||||
* to be the only LLP64 architecture in current use.
|
||||
*/
|
||||
#ifdef _WIN64
|
||||
typedef signed long long int khronos_intptr_t;
|
||||
typedef unsigned long long int khronos_uintptr_t;
|
||||
typedef signed long long int khronos_ssize_t;
|
||||
typedef unsigned long long int khronos_usize_t;
|
||||
#else
|
||||
typedef signed long int khronos_intptr_t;
|
||||
typedef unsigned long int khronos_uintptr_t;
|
||||
typedef signed long int khronos_ssize_t;
|
||||
typedef unsigned long int khronos_usize_t;
|
||||
#endif
|
||||
|
||||
#if KHRONOS_SUPPORT_FLOAT
|
||||
/*
|
||||
* Float type
|
||||
*/
|
||||
typedef float khronos_float_t;
|
||||
#endif
|
||||
|
||||
#if KHRONOS_SUPPORT_INT64
|
||||
/* Time types
|
||||
*
|
||||
* These types can be used to represent a time interval in nanoseconds or
|
||||
* an absolute Unadjusted System Time. Unadjusted System Time is the number
|
||||
* of nanoseconds since some arbitrary system event (e.g. since the last
|
||||
* time the system booted). The Unadjusted System Time is an unsigned
|
||||
* 64 bit value that wraps back to 0 every 584 years. Time intervals
|
||||
* may be either signed or unsigned.
|
||||
*/
|
||||
typedef khronos_uint64_t khronos_utime_nanoseconds_t;
|
||||
typedef khronos_int64_t khronos_stime_nanoseconds_t;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Dummy value used to pad enum types to 32 bits.
|
||||
*/
|
||||
#ifndef KHRONOS_MAX_ENUM
|
||||
#define KHRONOS_MAX_ENUM 0x7FFFFFFF
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Enumerated boolean type
|
||||
*
|
||||
* Values other than zero should be considered to be true. Therefore
|
||||
* comparisons should not be made against KHRONOS_TRUE.
|
||||
*/
|
||||
typedef enum {
|
||||
KHRONOS_FALSE = 0,
|
||||
KHRONOS_TRUE = 1,
|
||||
KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
|
||||
} khronos_boolean_enum_t;
|
||||
|
||||
#endif /* __khrplatform_h_ */
|
|
@ -1,32 +0,0 @@
|
|||
// Copyright (C) 2002-2013 The ANGLE Project Authors.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions
|
||||
// are met:
|
||||
//
|
||||
// Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
//
|
||||
// Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following
|
||||
// disclaimer in the documentation and/or other materials provided
|
||||
// with the distribution.
|
||||
//
|
||||
// Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc.
|
||||
// Ltd., nor the names of their contributors may be used to endorse
|
||||
// or promote products derived from this software without specific
|
||||
// prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
// POSSIBILITY OF SUCH DAMAGE.
|
|
@ -1,23 +0,0 @@
|
|||
//
|
||||
// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
//
|
||||
// angle_gl.h:
|
||||
// Includes all necessary GL headers and definitions for ANGLE.
|
||||
//
|
||||
|
||||
#ifndef ANGLE_GL_H_
|
||||
#define ANGLE_GL_H_
|
||||
|
||||
#include "GLES2/gl2.h"
|
||||
#include "GLES2/gl2ext.h"
|
||||
#include "GLES3/gl3.h"
|
||||
#include "GLES3/gl3ext.h"
|
||||
|
||||
// The following enum is used in ANGLE, but is from desktop GL
|
||||
#ifndef GL_SAMPLER_2D_RECT_ARB
|
||||
#define GL_SAMPLER_2D_RECT_ARB 0x8B63
|
||||
#endif
|
||||
|
||||
#endif // ANGLE_GL_H_
|
|
@ -1,37 +0,0 @@
|
|||
//
|
||||
// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
//
|
||||
// angle_windowsstore.h:
|
||||
|
||||
#ifndef ANGLE_WINDOWSSTORE_H_
|
||||
#define ANGLE_WINDOWSSTORE_H_
|
||||
|
||||
// The following properties can be set on the CoreApplication to support additional
|
||||
// ANGLE configuration options.
|
||||
//
|
||||
// The Visual Studio sample templates provided with this version of ANGLE have examples
|
||||
// of how to set these property values.
|
||||
|
||||
//
|
||||
// Property: EGLNativeWindowTypeProperty
|
||||
// Type: IInspectable
|
||||
// Description: Set this property to specify the window type to use for creating a surface.
|
||||
// If this property is missing, surface creation will fail.
|
||||
//
|
||||
const wchar_t EGLNativeWindowTypeProperty[] = L"EGLNativeWindowTypeProperty";
|
||||
|
||||
//
|
||||
// Property: EGLRenderSurfaceSizeProperty
|
||||
// Type: Size
|
||||
// Description: Set this property to specify a preferred size in pixels of the render surface.
|
||||
// The render surface size width and height must be greater than 0.
|
||||
// If this property is set, then the render surface size is fixed.
|
||||
// If this property is missing, a default behavior will be provided.
|
||||
// The default behavior uses the window size if a CoreWindow is specified or
|
||||
// the size of the SwapChainPanel control if one is specified.
|
||||
//
|
||||
const wchar_t EGLRenderSurfaceSizeProperty[] = L"EGLRenderSurfaceSizeProperty";
|
||||
|
||||
#endif // ANGLE_WINDOWSSTORE_H_
|
|
@ -0,0 +1,146 @@
|
|||
/*************************************************************************/
|
||||
/* joystick.cpp */
|
||||
/*************************************************************************/
|
||||
/* This file is part of: */
|
||||
/* GODOT ENGINE */
|
||||
/* http://www.godotengine.org */
|
||||
/*************************************************************************/
|
||||
/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
/* "Software"), to deal in the Software without restriction, including */
|
||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||
/* the following conditions: */
|
||||
/* */
|
||||
/* The above copyright notice and this permission notice shall be */
|
||||
/* included in all copies or substantial portions of the Software. */
|
||||
/* */
|
||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
|
||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/*************************************************************************/
|
||||
|
||||
#include "joystick_winrt.h"
|
||||
|
||||
using namespace Windows::Gaming::Input;
|
||||
using namespace Windows::Foundation;
|
||||
|
||||
void JoystickWinrt::register_events() {
|
||||
|
||||
Gamepad::GamepadAdded +=
|
||||
ref new EventHandler<Gamepad^>(this, &JoystickWinrt::OnGamepadAdded);
|
||||
Gamepad::GamepadRemoved +=
|
||||
ref new EventHandler<Gamepad^>(this, &JoystickWinrt::OnGamepadRemoved);
|
||||
}
|
||||
|
||||
uint32_t JoystickWinrt::process_controllers(uint32_t p_last_id) {
|
||||
|
||||
for (int i = 0; i < MAX_CONTROLLERS; i++) {
|
||||
|
||||
if (!controllers[i].connected) break;
|
||||
|
||||
switch (controllers[i].type) {
|
||||
|
||||
case ControllerType::GAMEPAD_CONTROLLER: {
|
||||
|
||||
GamepadReading reading = ((Gamepad^)controllers[i].controller_reference)->GetCurrentReading();
|
||||
|
||||
int button_mask = (int)GamepadButtons::Menu;
|
||||
for (int j = 0; j < 14; j++) {
|
||||
|
||||
p_last_id = input->joy_button(p_last_id, controllers[i].id, j,(int)reading.Buttons & button_mask);
|
||||
button_mask *= 2;
|
||||
}
|
||||
|
||||
p_last_id = input->joy_axis(p_last_id, controllers[i].id, JOY_AXIS_0, axis_correct(reading.LeftThumbstickX));
|
||||
p_last_id = input->joy_axis(p_last_id, controllers[i].id, JOY_AXIS_1, axis_correct(reading.LeftThumbstickY, true));
|
||||
p_last_id = input->joy_axis(p_last_id, controllers[i].id, JOY_AXIS_2, axis_correct(reading.RightThumbstickX));
|
||||
p_last_id = input->joy_axis(p_last_id, controllers[i].id, JOY_AXIS_3, axis_correct(reading.RightThumbstickY, true));
|
||||
p_last_id = input->joy_axis(p_last_id, controllers[i].id, JOY_AXIS_4, axis_correct(reading.LeftTrigger, false, true));
|
||||
p_last_id = input->joy_axis(p_last_id, controllers[i].id, JOY_AXIS_5, axis_correct(reading.RightTrigger, false, true));
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return p_last_id;
|
||||
}
|
||||
|
||||
JoystickWinrt::JoystickWinrt() {
|
||||
|
||||
for (int i = 0; i < MAX_CONTROLLERS; i++)
|
||||
controllers[i].id = i;
|
||||
}
|
||||
|
||||
JoystickWinrt::JoystickWinrt(InputDefault * p_input) {
|
||||
|
||||
input = p_input;
|
||||
|
||||
JoystickWinrt();
|
||||
}
|
||||
|
||||
void JoystickWinrt::OnGamepadAdded(Platform::Object ^ sender, Windows::Gaming::Input::Gamepad ^ value) {
|
||||
|
||||
short idx = -1;
|
||||
|
||||
for (int i = 0; i < MAX_CONTROLLERS; i++) {
|
||||
|
||||
if (!controllers[i].connected) {
|
||||
idx = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ERR_FAIL_COND(idx == -1);
|
||||
|
||||
controllers[idx].connected = true;
|
||||
controllers[idx].controller_reference = value;
|
||||
controllers[idx].type = ControllerType::GAMEPAD_CONTROLLER;
|
||||
|
||||
input->joy_connection_changed(idx, true, "Xbox Controller", "__WINRT_GAMEPAD__");
|
||||
}
|
||||
|
||||
void JoystickWinrt::OnGamepadRemoved(Platform::Object ^ sender, Windows::Gaming::Input::Gamepad ^ value) {
|
||||
|
||||
short idx = -1;
|
||||
|
||||
for (int i = 0; i < MAX_CONTROLLERS; i++) {
|
||||
|
||||
if (controllers[i].controller_reference == value) {
|
||||
idx = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ERR_FAIL_COND(idx == -1);
|
||||
|
||||
for (int i = idx + 1; i < MAX_CONTROLLERS - 1; i++) {
|
||||
|
||||
if (!controllers[i].connected) {
|
||||
break;
|
||||
}
|
||||
|
||||
controllers[i - 1] = controllers[i];
|
||||
}
|
||||
controllers[MAX_CONTROLLERS - 1] = ControllerDevice();
|
||||
|
||||
input->joy_connection_changed(idx, false, "Xbox Controller");
|
||||
}
|
||||
|
||||
InputDefault::JoyAxis JoystickWinrt::axis_correct(double p_val, bool p_negate, bool p_trigger) const {
|
||||
|
||||
InputDefault::JoyAxis jx;
|
||||
|
||||
jx.min = p_trigger ? 0 : -1;
|
||||
jx.value = (float)(p_negate ? -p_val : p_val);
|
||||
|
||||
return jx;
|
||||
}
|
|
@ -0,0 +1,81 @@
|
|||
/*************************************************************************/
|
||||
/* joystick.h */
|
||||
/*************************************************************************/
|
||||
/* This file is part of: */
|
||||
/* GODOT ENGINE */
|
||||
/* http://www.godotengine.org */
|
||||
/*************************************************************************/
|
||||
/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
/* "Software"), to deal in the Software without restriction, including */
|
||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||
/* the following conditions: */
|
||||
/* */
|
||||
/* The above copyright notice and this permission notice shall be */
|
||||
/* included in all copies or substantial portions of the Software. */
|
||||
/* */
|
||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
|
||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/*************************************************************************/
|
||||
#ifndef JOYSTICK_WINRT_H
|
||||
#define JOYSTICK_WINRT_H
|
||||
|
||||
#include "main/input_default.h"
|
||||
|
||||
ref class JoystickWinrt sealed {
|
||||
|
||||
internal:
|
||||
|
||||
void register_events();
|
||||
uint32_t process_controllers(uint32_t p_last_id);
|
||||
|
||||
JoystickWinrt();
|
||||
JoystickWinrt(InputDefault* p_input);
|
||||
|
||||
private:
|
||||
|
||||
enum {
|
||||
MAX_CONTROLLERS = 4,
|
||||
};
|
||||
|
||||
enum ControllerType {
|
||||
GAMEPAD_CONTROLLER,
|
||||
ARCADE_STICK_CONTROLLER,
|
||||
RACING_WHEEL_CONTROLLER,
|
||||
};
|
||||
|
||||
struct ControllerDevice {
|
||||
|
||||
Windows::Gaming::Input::IGameController^ controller_reference;
|
||||
|
||||
int id;
|
||||
bool connected;
|
||||
ControllerType type;
|
||||
|
||||
ControllerDevice() {
|
||||
id = -1;
|
||||
connected = false;
|
||||
type = ControllerType::GAMEPAD_CONTROLLER;
|
||||
}
|
||||
};
|
||||
|
||||
ControllerDevice controllers[MAX_CONTROLLERS];
|
||||
|
||||
InputDefault* input;
|
||||
|
||||
void OnGamepadAdded(Platform::Object^ sender, Windows::Gaming::Input::Gamepad^ value);
|
||||
void OnGamepadRemoved(Platform::Object^ sender, Windows::Gaming::Input::Gamepad^ value);
|
||||
|
||||
InputDefault::JoyAxis axis_correct(double p_val, bool p_negate = false, bool p_trigger = false) const;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -26,16 +26,17 @@
|
|||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/*************************************************************************/
|
||||
#include "os_winrt.h"
|
||||
#include "drivers/gles2/rasterizer_gles2.h"
|
||||
|
||||
#include "drivers/unix/memory_pool_static_malloc.h"
|
||||
#include "os/memory_pool_dynamic_static.h"
|
||||
#include "thread_winrt.h"
|
||||
//#include "drivers/windows/semaphore_windows.h"
|
||||
#include "drivers/windows/dir_access_windows.h"
|
||||
#include "drivers/windows/file_access_windows.h"
|
||||
#include "drivers/windows/mutex_windows.h"
|
||||
#include "drivers/windows/semaphore_windows.h"
|
||||
#include "main/main.h"
|
||||
#include "os/memory_pool_dynamic_static.h"
|
||||
#include "os_winrt.h"
|
||||
#include "thread_winrt.h"
|
||||
|
||||
#include "servers/audio/audio_server_sw.h"
|
||||
#include "servers/visual/visual_server_raster.h"
|
||||
|
@ -45,15 +46,27 @@
|
|||
#include "io/marshalls.h"
|
||||
#include "os/memory_pool_dynamic_prealloc.h"
|
||||
|
||||
#include "drivers/unix/ip_unix.h"
|
||||
#include "platform/windows/packet_peer_udp_winsock.h"
|
||||
#include "platform/windows/stream_peer_winsock.h"
|
||||
#include "platform/windows/tcp_server_winsock.h"
|
||||
|
||||
#include <ppltasks.h>
|
||||
#include <wrl.h>
|
||||
|
||||
using namespace Windows::ApplicationModel::Core;
|
||||
using namespace Windows::ApplicationModel::Activation;
|
||||
using namespace Windows::UI::Core;
|
||||
using namespace Windows::UI::Input;
|
||||
using namespace Windows::UI::Popups;
|
||||
using namespace Windows::Foundation;
|
||||
using namespace Windows::Graphics::Display;
|
||||
using namespace Microsoft::WRL;
|
||||
using namespace Windows::UI::ViewManagement;
|
||||
using namespace Windows::Devices::Input;
|
||||
using namespace Windows::Devices::Sensors;
|
||||
using namespace Windows::ApplicationModel::DataTransfer;
|
||||
using namespace concurrency;
|
||||
|
||||
int OSWinrt::get_video_driver_count() const {
|
||||
|
||||
|
@ -69,6 +82,65 @@ OS::VideoMode OSWinrt::get_default_video_mode() const {
|
|||
return video_mode;
|
||||
}
|
||||
|
||||
Size2 OSWinrt::get_window_size() const {
|
||||
Size2 size;
|
||||
size.width = video_mode.width;
|
||||
size.height = video_mode.height;
|
||||
return size;
|
||||
}
|
||||
|
||||
void OSWinrt::set_window_size(const Size2 p_size) {
|
||||
|
||||
Windows::Foundation::Size new_size;
|
||||
new_size.Width = p_size.width;
|
||||
new_size.Height = p_size.height;
|
||||
|
||||
ApplicationView ^ view = ApplicationView::GetForCurrentView();
|
||||
|
||||
if (view->TryResizeView(new_size)) {
|
||||
|
||||
video_mode.width = p_size.width;
|
||||
video_mode.height = p_size.height;
|
||||
}
|
||||
}
|
||||
|
||||
void OSWinrt::set_window_fullscreen(bool p_enabled) {
|
||||
|
||||
ApplicationView ^ view = ApplicationView::GetForCurrentView();
|
||||
|
||||
video_mode.fullscreen = view->IsFullScreenMode;
|
||||
|
||||
if (video_mode.fullscreen == p_enabled)
|
||||
return;
|
||||
|
||||
if (p_enabled) {
|
||||
|
||||
video_mode.fullscreen = view->TryEnterFullScreenMode();
|
||||
|
||||
} else {
|
||||
|
||||
view->ExitFullScreenMode();
|
||||
video_mode.fullscreen = false;
|
||||
}
|
||||
}
|
||||
|
||||
bool OSWinrt::is_window_fullscreen() const {
|
||||
|
||||
return ApplicationView::GetForCurrentView()->IsFullScreenMode;
|
||||
}
|
||||
|
||||
void OSWinrt::set_keep_screen_on(bool p_enabled) {
|
||||
|
||||
if (is_keep_screen_on() == p_enabled) return;
|
||||
|
||||
if (p_enabled)
|
||||
display_request->RequestActive();
|
||||
else
|
||||
display_request->RequestRelease();
|
||||
|
||||
OS::set_keep_screen_on(p_enabled);
|
||||
}
|
||||
|
||||
int OSWinrt::get_audio_driver_count() const {
|
||||
|
||||
return AudioDriverManagerSW::get_driver_count();
|
||||
|
@ -90,7 +162,7 @@ void OSWinrt::initialize_core() {
|
|||
//RedirectIOToConsole();
|
||||
|
||||
ThreadWinrt::make_default();
|
||||
//SemaphoreWindows::make_default();
|
||||
SemaphoreWindows::make_default();
|
||||
MutexWindows::make_default();
|
||||
|
||||
FileAccess::make_default<FileAccessWindows>(FileAccess::ACCESS_RESOURCES);
|
||||
|
@ -104,6 +176,10 @@ void OSWinrt::initialize_core() {
|
|||
//TCPServerWinsock::make_default();
|
||||
//StreamPeerWinsock::make_default();
|
||||
|
||||
TCPServerWinsock::make_default();
|
||||
StreamPeerWinsock::make_default();
|
||||
PacketPeerUDPWinsock::make_default();
|
||||
|
||||
mempool_static = new MemoryPoolStaticMalloc;
|
||||
#if 1
|
||||
mempool_dynamic = memnew(MemoryPoolDynamicStatic);
|
||||
|
@ -122,6 +198,8 @@ void OSWinrt::initialize_core() {
|
|||
ticks_start = 0;
|
||||
ticks_start = get_ticks_usec();
|
||||
|
||||
IP_Unix::make_default();
|
||||
|
||||
cursor_shape = CURSOR_ARROW;
|
||||
}
|
||||
|
||||
|
@ -149,9 +227,38 @@ void OSWinrt::initialize(const VideoMode &p_desired, int p_video_driver, int p_a
|
|||
VideoMode vm;
|
||||
vm.width = gl_context->get_window_width();
|
||||
vm.height = gl_context->get_window_height();
|
||||
vm.fullscreen = true;
|
||||
vm.resizable = false;
|
||||
|
||||
ApplicationView ^ view = ApplicationView::GetForCurrentView();
|
||||
vm.fullscreen = view->IsFullScreenMode;
|
||||
|
||||
view->SetDesiredBoundsMode(ApplicationViewBoundsMode::UseVisible);
|
||||
view->PreferredLaunchWindowingMode = ApplicationViewWindowingMode::PreferredLaunchViewSize;
|
||||
|
||||
if (p_desired.fullscreen != view->IsFullScreenMode) {
|
||||
if (p_desired.fullscreen) {
|
||||
|
||||
vm.fullscreen = view->TryEnterFullScreenMode();
|
||||
|
||||
} else {
|
||||
|
||||
view->ExitFullScreenMode();
|
||||
vm.fullscreen = false;
|
||||
}
|
||||
}
|
||||
|
||||
Windows::Foundation::Size desired;
|
||||
desired.Width = p_desired.width;
|
||||
desired.Height = p_desired.height;
|
||||
|
||||
view->PreferredLaunchViewSize = desired;
|
||||
|
||||
if (view->TryResizeView(desired)) {
|
||||
|
||||
vm.width = view->VisibleBounds.Width;
|
||||
vm.height = view->VisibleBounds.Height;
|
||||
}
|
||||
|
||||
set_video_mode(vm);
|
||||
|
||||
gl_context->make_current();
|
||||
|
@ -174,6 +281,9 @@ void OSWinrt::initialize(const VideoMode &p_desired, int p_video_driver, int p_a
|
|||
|
||||
input = memnew(InputDefault);
|
||||
|
||||
joystick = ref new JoystickWinrt(input);
|
||||
joystick->register_events();
|
||||
|
||||
AudioDriverManagerSW::get_driver(p_audio_driver)->set_singleton();
|
||||
|
||||
if (AudioDriverManagerSW::get_driver(p_audio_driver)->init() != OK) {
|
||||
|
@ -191,94 +301,72 @@ void OSWinrt::initialize(const VideoMode &p_desired, int p_video_driver, int p_a
|
|||
spatial_sound_2d_server = memnew(SpatialSound2DServerSW);
|
||||
spatial_sound_2d_server->init();
|
||||
|
||||
managed_object->update_clipboard();
|
||||
|
||||
Clipboard::ContentChanged += ref new EventHandler<Platform::Object ^>(managed_object, &ManagedType::on_clipboard_changed);
|
||||
|
||||
accelerometer = Accelerometer::GetDefault();
|
||||
if (accelerometer != nullptr) {
|
||||
// 60 FPS
|
||||
accelerometer->ReportInterval = (1.0f / 60.0f) * 1000;
|
||||
accelerometer->ReadingChanged +=
|
||||
ref new TypedEventHandler<Accelerometer ^, AccelerometerReadingChangedEventArgs ^>(managed_object, &ManagedType::on_accelerometer_reading_changed);
|
||||
}
|
||||
|
||||
magnetometer = Magnetometer::GetDefault();
|
||||
if (magnetometer != nullptr) {
|
||||
// 60 FPS
|
||||
magnetometer->ReportInterval = (1.0f / 60.0f) * 1000;
|
||||
magnetometer->ReadingChanged +=
|
||||
ref new TypedEventHandler<Magnetometer ^, MagnetometerReadingChangedEventArgs ^>(managed_object, &ManagedType::on_magnetometer_reading_changed);
|
||||
}
|
||||
|
||||
gyrometer = Gyrometer::GetDefault();
|
||||
if (gyrometer != nullptr) {
|
||||
// 60 FPS
|
||||
gyrometer->ReportInterval = (1.0f / 60.0f) * 1000;
|
||||
gyrometer->ReadingChanged +=
|
||||
ref new TypedEventHandler<Gyrometer ^, GyrometerReadingChangedEventArgs ^>(managed_object, &ManagedType::on_gyroscope_reading_changed);
|
||||
}
|
||||
|
||||
_ensure_data_dir();
|
||||
|
||||
if (is_keep_screen_on())
|
||||
display_request->RequestActive();
|
||||
|
||||
set_keep_screen_on(GLOBAL_DEF("display/keep_screen_on", true));
|
||||
}
|
||||
|
||||
void OSWinrt::set_clipboard(const String &p_text){
|
||||
void OSWinrt::set_clipboard(const String &p_text) {
|
||||
|
||||
/*
|
||||
if (!OpenClipboard(hWnd)) {
|
||||
ERR_EXPLAIN("Unable to open clipboard.");
|
||||
ERR_FAIL();
|
||||
};
|
||||
EmptyClipboard();
|
||||
DataPackage ^ clip = ref new DataPackage();
|
||||
clip->RequestedOperation = DataPackageOperation::Copy;
|
||||
clip->SetText(ref new Platform::String((const wchar_t *)p_text.c_str()));
|
||||
|
||||
HGLOBAL mem = GlobalAlloc(GMEM_MOVEABLE, (p_text.length() + 1) * sizeof(CharType));
|
||||
if (mem == NULL) {
|
||||
ERR_EXPLAIN("Unable to allocate memory for clipboard contents.");
|
||||
ERR_FAIL();
|
||||
};
|
||||
LPWSTR lptstrCopy = (LPWSTR)GlobalLock(mem);
|
||||
memcpy(lptstrCopy, p_text.c_str(), (p_text.length() + 1) * sizeof(CharType));
|
||||
//memset((lptstrCopy + p_text.length()), 0, sizeof(CharType));
|
||||
GlobalUnlock(mem);
|
||||
|
||||
SetClipboardData(CF_UNICODETEXT, mem);
|
||||
|
||||
// set the CF_TEXT version (not needed?)
|
||||
CharString utf8 = p_text.utf8();
|
||||
mem = GlobalAlloc(GMEM_MOVEABLE, utf8.length() + 1);
|
||||
if (mem == NULL) {
|
||||
ERR_EXPLAIN("Unable to allocate memory for clipboard contents.");
|
||||
ERR_FAIL();
|
||||
};
|
||||
LPTSTR ptr = (LPTSTR)GlobalLock(mem);
|
||||
memcpy(ptr, utf8.get_data(), utf8.length());
|
||||
ptr[utf8.length()] = 0;
|
||||
GlobalUnlock(mem);
|
||||
|
||||
SetClipboardData(CF_TEXT, mem);
|
||||
|
||||
CloseClipboard();
|
||||
*/
|
||||
Clipboard::SetContent(clip);
|
||||
};
|
||||
|
||||
String OSWinrt::get_clipboard() const {
|
||||
|
||||
/*
|
||||
String ret;
|
||||
if (!OpenClipboard(hWnd)) {
|
||||
ERR_EXPLAIN("Unable to open clipboard.");
|
||||
ERR_FAIL_V("");
|
||||
};
|
||||
|
||||
if (IsClipboardFormatAvailable(CF_UNICODETEXT)) {
|
||||
|
||||
HGLOBAL mem = GetClipboardData(CF_UNICODETEXT);
|
||||
if (mem != NULL) {
|
||||
|
||||
LPWSTR ptr = (LPWSTR)GlobalLock(mem);
|
||||
if (ptr != NULL) {
|
||||
|
||||
ret = String((CharType*)ptr);
|
||||
GlobalUnlock(mem);
|
||||
};
|
||||
};
|
||||
|
||||
} else if (IsClipboardFormatAvailable(CF_TEXT)) {
|
||||
|
||||
HGLOBAL mem = GetClipboardData(CF_UNICODETEXT);
|
||||
if (mem != NULL) {
|
||||
|
||||
LPTSTR ptr = (LPTSTR)GlobalLock(mem);
|
||||
if (ptr != NULL) {
|
||||
|
||||
ret.parse_utf8((const char*)ptr);
|
||||
GlobalUnlock(mem);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
CloseClipboard();
|
||||
|
||||
return ret;
|
||||
*/
|
||||
return "";
|
||||
if (managed_object->clipboard != nullptr)
|
||||
return managed_object->clipboard->Data();
|
||||
else
|
||||
return "";
|
||||
};
|
||||
|
||||
void OSWinrt::input_event(InputEvent &p_event) {
|
||||
|
||||
p_event.ID = ++last_id;
|
||||
|
||||
input->parse_input_event(p_event);
|
||||
|
||||
if (p_event.type == InputEvent::MOUSE_BUTTON && p_event.mouse_button.pressed && p_event.mouse_button.button_index > 3) {
|
||||
|
||||
//send release for mouse wheel
|
||||
p_event.mouse_button.pressed = false;
|
||||
p_event.ID = ++last_id;
|
||||
input->parse_input_event(p_event);
|
||||
}
|
||||
};
|
||||
|
||||
void OSWinrt::delete_main_loop() {
|
||||
|
@ -331,6 +419,8 @@ void OSWinrt::finalize() {
|
|||
|
||||
physics_2d_server->finish();
|
||||
memdelete(physics_2d_server);
|
||||
|
||||
joystick = nullptr;
|
||||
}
|
||||
void OSWinrt::finalize_core() {
|
||||
|
||||
|
@ -360,9 +450,6 @@ void OSWinrt::vprint(const char *p_format, va_list p_list, bool p_stderr) {
|
|||
else
|
||||
wprintf(L"%s", wbuf);
|
||||
|
||||
#ifdef STDOUT_FILE
|
||||
//vwfprintf(stdo,p_format,p_list);
|
||||
#endif
|
||||
free(wbuf);
|
||||
|
||||
fflush(stdout);
|
||||
|
@ -370,10 +457,96 @@ void OSWinrt::vprint(const char *p_format, va_list p_list, bool p_stderr) {
|
|||
|
||||
void OSWinrt::alert(const String &p_alert, const String &p_title) {
|
||||
|
||||
print_line("ALERT: " + p_alert);
|
||||
Platform::String ^ alert = ref new Platform::String(p_alert.c_str());
|
||||
Platform::String ^ title = ref new Platform::String(p_title.c_str());
|
||||
|
||||
MessageDialog ^ msg = ref new MessageDialog(alert, title);
|
||||
|
||||
UICommand ^ close = ref new UICommand("Close", ref new UICommandInvokedHandler(managed_object, &OSWinrt::ManagedType::alert_close));
|
||||
msg->Commands->Append(close);
|
||||
msg->DefaultCommandIndex = 0;
|
||||
|
||||
managed_object->alert_close_handle = true;
|
||||
|
||||
msg->ShowAsync();
|
||||
}
|
||||
|
||||
void OSWinrt::ManagedType::alert_close(IUICommand ^ command) {
|
||||
|
||||
alert_close_handle = false;
|
||||
}
|
||||
|
||||
void OSWinrt::ManagedType::on_clipboard_changed(Platform::Object ^ sender, Platform::Object ^ ev) {
|
||||
|
||||
update_clipboard();
|
||||
}
|
||||
|
||||
void OSWinrt::ManagedType::update_clipboard() {
|
||||
|
||||
DataPackageView ^ data = Clipboard::GetContent();
|
||||
|
||||
if (data->Contains(StandardDataFormats::Text)) {
|
||||
|
||||
create_task(data->GetTextAsync()).then([this](Platform::String ^ clipboard_content) {
|
||||
|
||||
this->clipboard = clipboard_content;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void OSWinrt::ManagedType::on_accelerometer_reading_changed(Accelerometer ^ sender, AccelerometerReadingChangedEventArgs ^ args) {
|
||||
|
||||
AccelerometerReading ^ reading = args->Reading;
|
||||
|
||||
os->input->set_accelerometer(Vector3(
|
||||
reading->AccelerationX,
|
||||
reading->AccelerationY,
|
||||
reading->AccelerationZ));
|
||||
}
|
||||
|
||||
void OSWinrt::ManagedType::on_magnetometer_reading_changed(Magnetometer ^ sender, MagnetometerReadingChangedEventArgs ^ args) {
|
||||
|
||||
MagnetometerReading ^ reading = args->Reading;
|
||||
|
||||
os->input->set_magnetometer(Vector3(
|
||||
reading->MagneticFieldX,
|
||||
reading->MagneticFieldY,
|
||||
reading->MagneticFieldZ));
|
||||
}
|
||||
|
||||
void OSWinrt::ManagedType::on_gyroscope_reading_changed(Gyrometer ^ sender, GyrometerReadingChangedEventArgs ^ args) {
|
||||
|
||||
GyrometerReading ^ reading = args->Reading;
|
||||
|
||||
os->input->set_magnetometer(Vector3(
|
||||
reading->AngularVelocityX,
|
||||
reading->AngularVelocityY,
|
||||
reading->AngularVelocityZ));
|
||||
}
|
||||
|
||||
void OSWinrt::set_mouse_mode(MouseMode p_mode) {
|
||||
|
||||
if (p_mode == MouseMode::MOUSE_MODE_CAPTURED) {
|
||||
|
||||
CoreWindow::GetForCurrentThread()->SetPointerCapture();
|
||||
|
||||
} else {
|
||||
|
||||
CoreWindow::GetForCurrentThread()->ReleasePointerCapture();
|
||||
}
|
||||
|
||||
if (p_mode == MouseMode::MOUSE_MODE_CAPTURED || p_mode == MouseMode::MOUSE_MODE_HIDDEN) {
|
||||
|
||||
CoreWindow::GetForCurrentThread()->PointerCursor = nullptr;
|
||||
|
||||
} else {
|
||||
|
||||
CoreWindow::GetForCurrentThread()->PointerCursor = ref new CoreCursor(CoreCursorType::Arrow, 0);
|
||||
}
|
||||
|
||||
mouse_mode = p_mode;
|
||||
|
||||
SetEvent(mouse_mode_changed);
|
||||
}
|
||||
|
||||
OSWinrt::MouseMode OSWinrt::get_mouse_mode() const {
|
||||
|
@ -465,7 +638,7 @@ OS::Time OSWinrt::get_time(bool utc) const {
|
|||
return time;
|
||||
}
|
||||
|
||||
OS::TimeZoneInfo OS_Windows::get_time_zone_info() const {
|
||||
OS::TimeZoneInfo OSWinrt::get_time_zone_info() const {
|
||||
TIME_ZONE_INFORMATION info;
|
||||
bool daylight = false;
|
||||
if (GetTimeZoneInformation(&info) == TIME_ZONE_ID_DAYLIGHT)
|
||||
|
@ -486,7 +659,7 @@ uint64_t OSWinrt::get_unix_time() const {
|
|||
|
||||
FILETIME ft;
|
||||
SYSTEMTIME st;
|
||||
GetSystemTime(&systemtime);
|
||||
GetSystemTime(&st);
|
||||
SystemTimeToFileTime(&st, &ft);
|
||||
|
||||
SYSTEMTIME ep;
|
||||
|
@ -526,9 +699,76 @@ uint64_t OSWinrt::get_ticks_usec() const {
|
|||
}
|
||||
|
||||
void OSWinrt::process_events() {
|
||||
last_id = joystick->process_controllers(last_id);
|
||||
process_key_events();
|
||||
}
|
||||
|
||||
void OSWinrt::process_key_events() {
|
||||
|
||||
for (int i = 0; i < key_event_pos; i++) {
|
||||
|
||||
KeyEvent &kev = key_event_buffer[i];
|
||||
InputEvent iev;
|
||||
|
||||
iev.type = InputEvent::KEY;
|
||||
iev.key.mod = kev.mod_state;
|
||||
iev.key.echo = kev.echo;
|
||||
iev.key.scancode = kev.scancode;
|
||||
iev.key.unicode = kev.unicode;
|
||||
iev.key.pressed = kev.pressed;
|
||||
|
||||
input_event(iev);
|
||||
}
|
||||
key_event_pos = 0;
|
||||
}
|
||||
|
||||
void OSWinrt::queue_key_event(KeyEvent &p_event) {
|
||||
// This merges Char events with the previous Key event, so
|
||||
// the unicode can be retrieved without sending duplicate events.
|
||||
if (p_event.type == KeyEvent::MessageType::CHAR_EVENT_MESSAGE && key_event_pos > 0) {
|
||||
|
||||
KeyEvent &old = key_event_buffer[key_event_pos - 1];
|
||||
ERR_FAIL_COND(old.type != KeyEvent::MessageType::KEY_EVENT_MESSAGE);
|
||||
|
||||
key_event_buffer[key_event_pos - 1].unicode = p_event.unicode;
|
||||
return;
|
||||
}
|
||||
|
||||
ERR_FAIL_COND(key_event_pos >= KEY_EVENT_BUFFER_SIZE);
|
||||
|
||||
key_event_buffer[key_event_pos++] = p_event;
|
||||
}
|
||||
|
||||
void OSWinrt::set_cursor_shape(CursorShape p_shape) {
|
||||
|
||||
ERR_FAIL_INDEX(p_shape, CURSOR_MAX);
|
||||
|
||||
if (cursor_shape == p_shape)
|
||||
return;
|
||||
|
||||
static const CoreCursorType uwp_cursors[CURSOR_MAX] = {
|
||||
CoreCursorType::Arrow,
|
||||
CoreCursorType::IBeam,
|
||||
CoreCursorType::Hand,
|
||||
CoreCursorType::Cross,
|
||||
CoreCursorType::Wait,
|
||||
CoreCursorType::Wait,
|
||||
CoreCursorType::Arrow,
|
||||
CoreCursorType::Arrow,
|
||||
CoreCursorType::UniversalNo,
|
||||
CoreCursorType::SizeNorthSouth,
|
||||
CoreCursorType::SizeWestEast,
|
||||
CoreCursorType::SizeNortheastSouthwest,
|
||||
CoreCursorType::SizeNorthwestSoutheast,
|
||||
CoreCursorType::SizeAll,
|
||||
CoreCursorType::SizeNorthSouth,
|
||||
CoreCursorType::SizeWestEast,
|
||||
CoreCursorType::Help
|
||||
};
|
||||
|
||||
CoreWindow::GetForCurrentThread()->PointerCursor = ref new CoreCursor(uwp_cursors[p_shape], 0);
|
||||
|
||||
cursor_shape = p_shape;
|
||||
}
|
||||
|
||||
Error OSWinrt::execute(const String &p_path, const List<String> &p_arguments, bool p_blocking, ProcessID *r_child_id, String *r_pipe, int *r_exitcode) {
|
||||
|
@ -583,7 +823,7 @@ String OSWinrt::get_locale() const {
|
|||
return "en";
|
||||
#else
|
||||
Platform::String ^ language = Windows::Globalization::Language::CurrentInputMethodLanguageTag;
|
||||
return language->Data();
|
||||
return String(language->Data()).replace("-", "_");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -602,6 +842,29 @@ void OSWinrt::swap_buffers() {
|
|||
gl_context->swap_buffers();
|
||||
}
|
||||
|
||||
bool OSWinrt::has_touchscreen_ui_hint() const {
|
||||
|
||||
TouchCapabilities ^ tc = ref new TouchCapabilities();
|
||||
return tc->TouchPresent != 0 || UIViewSettings::GetForCurrentView()->UserInteractionMode == UserInteractionMode::Touch;
|
||||
}
|
||||
|
||||
bool OSWinrt::has_virtual_keyboard() const {
|
||||
|
||||
return UIViewSettings::GetForCurrentView()->UserInteractionMode == UserInteractionMode::Touch;
|
||||
}
|
||||
|
||||
void OSWinrt::show_virtual_keyboard(const String &p_existing_text, const Rect2 &p_screen_rect) {
|
||||
|
||||
InputPane ^ pane = InputPane::GetForCurrentView();
|
||||
pane->TryShow();
|
||||
}
|
||||
|
||||
void OSWinrt::hide_virtual_keyboard() {
|
||||
|
||||
InputPane ^ pane = InputPane::GetForCurrentView();
|
||||
pane->TryHide();
|
||||
}
|
||||
|
||||
void OSWinrt::run() {
|
||||
|
||||
if (!main_loop)
|
||||
|
@ -617,6 +880,7 @@ void OSWinrt::run() {
|
|||
while (!force_quit) {
|
||||
|
||||
CoreWindow::GetForCurrentThread()->Dispatcher->ProcessEvents(CoreProcessEventsOption::ProcessAllIfPresent);
|
||||
if (managed_object->alert_close_handle) continue;
|
||||
process_events(); // get rid of pending events
|
||||
if (Main::iteration() == true)
|
||||
break;
|
||||
|
@ -634,7 +898,7 @@ String OSWinrt::get_data_dir() const {
|
|||
|
||||
Windows::Storage::StorageFolder ^ data_folder = Windows::Storage::ApplicationData::Current->LocalFolder;
|
||||
|
||||
return data_folder->Path->Data();
|
||||
return String(data_folder->Path->Data()).replace("\\", "/");
|
||||
}
|
||||
|
||||
OSWinrt::OSWinrt() {
|
||||
|
@ -658,6 +922,13 @@ OSWinrt::OSWinrt() {
|
|||
|
||||
gl_context = NULL;
|
||||
|
||||
display_request = ref new Windows::System::Display::DisplayRequest();
|
||||
|
||||
managed_object = ref new ManagedType;
|
||||
managed_object->os = this;
|
||||
|
||||
mouse_mode_changed = CreateEvent(NULL, TRUE, FALSE, L"os_mouse_mode_changed");
|
||||
|
||||
AudioDriverManagerSW::add_driver(&audio_driver);
|
||||
}
|
||||
|
||||
|
|
|
@ -45,7 +45,8 @@
|
|||
|
||||
#include "gl_context_egl.h"
|
||||
|
||||
#include <windows.h>
|
||||
#include "core/math/math_2d.h"
|
||||
#include "core/ustring.h"
|
||||
|
||||
#include <io.h>
|
||||
|
||||
|
@ -53,11 +54,34 @@
|
|||
#include <fcntl.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "audio_driver_winrt.h"
|
||||
#include "joystick_winrt.h"
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
/**
|
||||
@author Juan Linietsky <reduzio@gmail.com>
|
||||
*/
|
||||
class OSWinrt : public OS {
|
||||
|
||||
public:
|
||||
struct KeyEvent {
|
||||
|
||||
enum MessageType {
|
||||
KEY_EVENT_MESSAGE,
|
||||
CHAR_EVENT_MESSAGE
|
||||
};
|
||||
|
||||
InputModifierState mod_state;
|
||||
MessageType type;
|
||||
bool pressed;
|
||||
unsigned int scancode;
|
||||
unsigned int unicode;
|
||||
bool echo;
|
||||
CorePhysicalKeyStatus status;
|
||||
};
|
||||
|
||||
private:
|
||||
enum {
|
||||
JOYSTICKS_MAX = 8,
|
||||
JOY_AXIS_COUNT = 6,
|
||||
|
@ -67,14 +91,6 @@ class OSWinrt : public OS {
|
|||
|
||||
FILE *stdo;
|
||||
|
||||
struct KeyEvent {
|
||||
|
||||
InputModifierState mod_state;
|
||||
UINT uMsg;
|
||||
WPARAM wParam;
|
||||
LPARAM lParam;
|
||||
};
|
||||
|
||||
KeyEvent key_event_buffer[KEY_EVENT_BUFFER_SIZE];
|
||||
int key_event_pos;
|
||||
|
||||
|
@ -95,37 +111,11 @@ class OSWinrt : public OS {
|
|||
|
||||
ContextEGL *gl_context;
|
||||
|
||||
struct Joystick {
|
||||
|
||||
int id;
|
||||
bool attached;
|
||||
|
||||
DWORD last_axis[JOY_AXIS_COUNT];
|
||||
DWORD last_buttons;
|
||||
DWORD last_pov;
|
||||
String name;
|
||||
|
||||
Joystick() {
|
||||
id = -1;
|
||||
attached = false;
|
||||
for (int i = 0; i < JOY_AXIS_COUNT; i++) {
|
||||
|
||||
last_axis[i] = 0;
|
||||
};
|
||||
last_buttons = 0;
|
||||
last_pov = 0;
|
||||
};
|
||||
};
|
||||
|
||||
List<Joystick> joystick_change_queue;
|
||||
int joystick_count;
|
||||
Joystick joysticks[JOYSTICKS_MAX];
|
||||
|
||||
VideoMode video_mode;
|
||||
|
||||
MainLoop *main_loop;
|
||||
|
||||
AudioDriverDummy audio_driver;
|
||||
AudioDriverWinRT audio_driver;
|
||||
AudioServerSW *audio_server;
|
||||
SampleManagerMallocSW *sample_manager;
|
||||
SpatialSoundServerSW *spatial_sound_server;
|
||||
|
@ -144,11 +134,34 @@ class OSWinrt : public OS {
|
|||
|
||||
InputDefault *input;
|
||||
|
||||
JoystickWinrt ^ joystick;
|
||||
|
||||
Windows::System::Display::DisplayRequest ^ display_request;
|
||||
|
||||
void _post_dpad(DWORD p_dpad, int p_device, bool p_pressed);
|
||||
|
||||
void _drag_event(int idx, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
void _touch_event(int idx, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
ref class ManagedType {
|
||||
public:
|
||||
property bool alert_close_handle;
|
||||
property Platform::String ^ clipboard;
|
||||
void alert_close(Windows::UI::Popups::IUICommand ^ command);
|
||||
void on_clipboard_changed(Platform::Object ^ sender, Platform::Object ^ ev);
|
||||
void update_clipboard();
|
||||
void on_accelerometer_reading_changed(Windows::Devices::Sensors::Accelerometer ^ sender, Windows::Devices::Sensors::AccelerometerReadingChangedEventArgs ^ args);
|
||||
void on_magnetometer_reading_changed(Windows::Devices::Sensors::Magnetometer ^ sender, Windows::Devices::Sensors::MagnetometerReadingChangedEventArgs ^ args);
|
||||
void on_gyroscope_reading_changed(Windows::Devices::Sensors::Gyrometer ^ sender, Windows::Devices::Sensors::GyrometerReadingChangedEventArgs ^ args);
|
||||
|
||||
internal : ManagedType() { alert_close_handle = false; }
|
||||
property OSWinrt *os;
|
||||
};
|
||||
ManagedType ^ managed_object;
|
||||
Windows::Devices::Sensors::Accelerometer ^ accelerometer;
|
||||
Windows::Devices::Sensors::Magnetometer ^ magnetometer;
|
||||
Windows::Devices::Sensors::Gyrometer ^ gyrometer;
|
||||
|
||||
// functions used by main to initialize/deintialize the OS
|
||||
protected:
|
||||
virtual int get_video_driver_count() const;
|
||||
|
@ -170,13 +183,14 @@ protected:
|
|||
|
||||
void process_events();
|
||||
|
||||
void probe_joysticks();
|
||||
void process_joysticks();
|
||||
void process_key_events();
|
||||
|
||||
public:
|
||||
void print_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, ErrorType p_type);
|
||||
|
||||
// Event to send to the app wrapper
|
||||
HANDLE mouse_mode_changed;
|
||||
|
||||
virtual void vprint(const char *p_format, va_list p_list, bool p_stderr = false);
|
||||
virtual void alert(const String &p_alert, const String &p_title = "ALERT!");
|
||||
String get_stdin_string(bool p_block);
|
||||
|
@ -191,6 +205,11 @@ public:
|
|||
virtual void set_video_mode(const VideoMode &p_video_mode, int p_screen = 0);
|
||||
virtual VideoMode get_video_mode(int p_screen = 0) const;
|
||||
virtual void get_fullscreen_mode_list(List<VideoMode> *p_list, int p_screen = 0) const;
|
||||
virtual Size2 get_window_size() const;
|
||||
virtual void set_window_size(const Size2 p_size);
|
||||
virtual void set_window_fullscreen(bool p_enabled);
|
||||
virtual bool is_window_fullscreen() const;
|
||||
virtual void set_keep_screen_on(bool p_enabled);
|
||||
|
||||
virtual MainLoop *get_main_loop() const;
|
||||
|
||||
|
@ -233,7 +252,11 @@ public:
|
|||
virtual void make_rendering_thread();
|
||||
virtual void swap_buffers();
|
||||
|
||||
virtual bool has_touchscreen_ui_hint() const { return true; };
|
||||
virtual bool has_touchscreen_ui_hint() const;
|
||||
|
||||
virtual bool has_virtual_keyboard() const;
|
||||
virtual void show_virtual_keyboard(const String &p_existing_text, const Rect2 &p_screen_rect = Rect2());
|
||||
virtual void hide_virtual_keyboard();
|
||||
|
||||
virtual Error shell_open(String p_uri);
|
||||
|
||||
|
@ -243,6 +266,8 @@ public:
|
|||
|
||||
void input_event(InputEvent &p_event);
|
||||
|
||||
void queue_key_event(KeyEvent &p_event);
|
||||
|
||||
OSWinrt();
|
||||
~OSWinrt();
|
||||
};
|
||||
|
|
|
@ -57,8 +57,10 @@ Thread::ID ThreadWinrt::get_ID() const {
|
|||
return std::hash<std::thread::id>()(thread.get_id());
|
||||
};
|
||||
|
||||
void ThreadWinrt::make_default(){
|
||||
|
||||
void ThreadWinrt::make_default() {
|
||||
create_func = create_func_winrt;
|
||||
get_thread_ID_func = get_thread_ID_func_winrt;
|
||||
wait_to_finish_func = wait_to_finish_func_winrt;
|
||||
};
|
||||
|
||||
ThreadWinrt::ThreadWinrt(){
|
||||
|
|
|
@ -118,8 +118,10 @@
|
|||
# ifndef _WIN32_WINNT
|
||||
# define _WIN32_WINNT 0x0400
|
||||
# endif
|
||||
#ifndef WINRT_ENABLED
|
||||
# include <wincrypt.h>
|
||||
# include <tlhelp32.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Limit the time spent walking through the heap, processes, threads and
|
||||
|
@ -161,7 +163,7 @@ typedef struct tagCURSORINFO {
|
|||
# define CURSOR_SHOWING 0x00000001
|
||||
# endif /* CURSOR_SHOWING */
|
||||
|
||||
# if !defined(OPENSSL_SYS_WINCE)
|
||||
# if !defined(OPENSSL_SYS_WINCE) && !defined(WINRT_ENABLED)
|
||||
typedef BOOL(WINAPI *CRYPTACQUIRECONTEXTW) (HCRYPTPROV *, LPCWSTR, LPCWSTR,
|
||||
DWORD, DWORD);
|
||||
typedef BOOL(WINAPI *CRYPTGENRANDOM) (HCRYPTPROV, DWORD, BYTE *);
|
||||
|
@ -196,6 +198,7 @@ typedef NET_API_STATUS(NET_API_FUNCTION *NETFREE) (LPBYTE);
|
|||
# endif /* 1 */
|
||||
# endif /* !OPENSSL_SYS_WINCE */
|
||||
|
||||
#if !defined(WINRT_ENABLED)
|
||||
int RAND_poll(void)
|
||||
{
|
||||
MEMORYSTATUS m;
|
||||
|
@ -580,6 +583,8 @@ int RAND_poll(void)
|
|||
return (1);
|
||||
}
|
||||
|
||||
#endif // WINRT_ENABLED
|
||||
|
||||
int RAND_event(UINT iMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
double add_entropy = 0;
|
||||
|
@ -682,7 +687,7 @@ static void readtimer(void)
|
|||
|
||||
static void readscreen(void)
|
||||
{
|
||||
# if !defined(OPENSSL_SYS_WINCE) && !defined(OPENSSL_SYS_WIN32_CYGWIN)
|
||||
# if !defined(OPENSSL_SYS_WINCE) && !defined(OPENSSL_SYS_WIN32_CYGWIN) && !defined(WINRT_ENABLED)
|
||||
HDC hScrDC; /* screen DC */
|
||||
HBITMAP hBitmap; /* handle for our bitmap */
|
||||
BITMAP bm; /* bitmap properties */
|
||||
|
|
|
@ -81,6 +81,9 @@
|
|||
# include <sys/time.h>
|
||||
# endif
|
||||
# endif
|
||||
#ifdef WINRT_ENABLED
|
||||
#include <winsock2.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
|
|
@ -0,0 +1,127 @@
|
|||
/* Snippets extracted from https://github.com/Microsoft/openssl/blob/ec7e430e06e4e3ac87c183dee33cb216814cf980/ms/winrt.cpp
|
||||
* Adapted for Godot definitions
|
||||
*/
|
||||
/* winrt.cpp
|
||||
* Copyright 2014 Microsoft Corporation
|
||||
* C++/CX Entropy/shims for Windows Phone/Windows Store platform
|
||||
* written by Alejandro Jimenez Martinez
|
||||
* (aljim@microsoft.com) for the OpenSSL project 2014.
|
||||
*/
|
||||
|
||||
#include <windows.h>
|
||||
#if defined(WINAPI_FAMILY)
|
||||
extern "C" {
|
||||
unsigned entropyRT(BYTE *buffer, unsigned len);
|
||||
void RAND_add(const void *buf, int num, double entropy);
|
||||
int RAND_poll(void);
|
||||
}
|
||||
#endif
|
||||
|
||||
unsigned entropyRT(BYTE *buffer, unsigned len) {
|
||||
using namespace Platform;
|
||||
using namespace Windows::Foundation;
|
||||
using namespace Windows::Foundation::Collections;
|
||||
using namespace Windows::Security::Cryptography;
|
||||
using namespace Windows::Storage::Streams;
|
||||
IBuffer ^ buf = CryptographicBuffer::GenerateRandom(len);
|
||||
Array<unsigned char> ^ arr;
|
||||
CryptographicBuffer::CopyToByteArray(buf, &arr);
|
||||
unsigned arrayLen = arr->Length;
|
||||
|
||||
// Make sure not to overflow the copy
|
||||
arrayLen = (arrayLen > len) ? len : arrayLen;
|
||||
memcpy(buffer, arr->Data, arrayLen);
|
||||
return arrayLen;
|
||||
}
|
||||
|
||||
int RAND_poll(void) {
|
||||
BYTE buf[60];
|
||||
unsigned collected = entropyRT(buf, sizeof(buf));
|
||||
RAND_add(buf, collected, collected);
|
||||
return 1;
|
||||
}
|
||||
|
||||
#if defined(WINRT_ENABLED)
|
||||
extern "C" {
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
void *GetModuleHandle(
|
||||
_In_opt_ LPCTSTR lpModuleName) {
|
||||
return NULL;
|
||||
}
|
||||
//no log for phone
|
||||
int RegisterEventSource(
|
||||
_In_ LPCTSTR lpUNCServerName,
|
||||
_In_ LPCTSTR lpSourceName) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int ReportEvent(
|
||||
_In_ HANDLE hEventLog,
|
||||
_In_ WORD wType,
|
||||
_In_ WORD wCategory,
|
||||
_In_ DWORD dwEventID,
|
||||
_In_ PSID lpUserSid,
|
||||
_In_ WORD wNumStrings,
|
||||
_In_ DWORD dwDataSize,
|
||||
_In_ LPCTSTR *lpStrings,
|
||||
_In_ LPVOID lpRawData) {
|
||||
return 0;
|
||||
}
|
||||
int MessageBox(
|
||||
_In_opt_ HWND hWnd,
|
||||
_In_opt_ LPCTSTR lpText,
|
||||
_In_opt_ LPCTSTR lpCaption,
|
||||
_In_ UINT uType) {
|
||||
return 0;
|
||||
}
|
||||
int __cdecl GetProcessWindowStation(void) {
|
||||
return NULL;
|
||||
}
|
||||
BOOL __cdecl GetUserObjectInformationW(
|
||||
_In_ HANDLE hObj,
|
||||
_In_ int nIndex,
|
||||
_Out_opt_ PVOID pvInfo,
|
||||
_In_ DWORD nLength,
|
||||
_Out_opt_ LPDWORD lpnLengthNeeded) {
|
||||
return 0;
|
||||
}
|
||||
int __cdecl GetStdHandle(
|
||||
_In_ DWORD nStdHandle) {
|
||||
return 0;
|
||||
}
|
||||
BOOL DeregisterEventSource(
|
||||
_Inout_ HANDLE hEventLog) {
|
||||
return 0;
|
||||
}
|
||||
char *getenv(
|
||||
const char *varname) {
|
||||
//hardcoded environmental variables used for the appx testing application for store/phone
|
||||
if (!strcmp(varname, "OPENSSL_CONF")) {
|
||||
return "./openssl.cnf";
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
int setenv(const char *envname, const char *envval, int overwrite) {
|
||||
return -1;
|
||||
}
|
||||
int _getch(void) {
|
||||
return 0;
|
||||
}
|
||||
int _kbhit() {
|
||||
return 0;
|
||||
}
|
||||
BOOL __cdecl FlushConsoleInputBuffer(
|
||||
_In_ HANDLE hConsoleInput) {
|
||||
return 0;
|
||||
}
|
||||
int winrt_GetTickCount(void) {
|
||||
LARGE_INTEGER t;
|
||||
return (int)(QueryPerformanceCounter(&t) ? t.QuadPart : 0);
|
||||
}
|
||||
void *OPENSSL_UplinkTable[26] = { 0 };
|
||||
} //extern C
|
||||
|
||||
#endif /*defined(WINRT_ENABLED)*/
|
|
@ -0,0 +1,64 @@
|
|||
diff --git a/drivers/builtin_openssl2/crypto/rand/rand_win.c b/drivers/builtin_openssl2/crypto/rand/rand_win.c
|
||||
index 06670ae..70fd52a 100644
|
||||
--- a/drivers/builtin_openssl2/crypto/rand/rand_win.c
|
||||
+++ b/drivers/builtin_openssl2/crypto/rand/rand_win.c
|
||||
@@ -118,8 +118,10 @@
|
||||
# ifndef _WIN32_WINNT
|
||||
# define _WIN32_WINNT 0x0400
|
||||
# endif
|
||||
+#ifndef WINRT_ENABLED
|
||||
# include <wincrypt.h>
|
||||
# include <tlhelp32.h>
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* Limit the time spent walking through the heap, processes, threads and
|
||||
@@ -161,7 +163,7 @@ typedef struct tagCURSORINFO {
|
||||
# define CURSOR_SHOWING 0x00000001
|
||||
# endif /* CURSOR_SHOWING */
|
||||
|
||||
-# if !defined(OPENSSL_SYS_WINCE)
|
||||
+# if !defined(OPENSSL_SYS_WINCE) && !defined(WINRT_ENABLED)
|
||||
typedef BOOL(WINAPI *CRYPTACQUIRECONTEXTW) (HCRYPTPROV *, LPCWSTR, LPCWSTR,
|
||||
DWORD, DWORD);
|
||||
typedef BOOL(WINAPI *CRYPTGENRANDOM) (HCRYPTPROV, DWORD, BYTE *);
|
||||
@@ -196,6 +198,7 @@ typedef NET_API_STATUS(NET_API_FUNCTION *NETFREE) (LPBYTE);
|
||||
# endif /* 1 */
|
||||
# endif /* !OPENSSL_SYS_WINCE */
|
||||
|
||||
+#if !defined(WINRT_ENABLED)
|
||||
int RAND_poll(void)
|
||||
{
|
||||
MEMORYSTATUS m;
|
||||
@@ -580,6 +583,8 @@ int RAND_poll(void)
|
||||
return (1);
|
||||
}
|
||||
|
||||
+#endif // WINRT_ENABLED
|
||||
+
|
||||
int RAND_event(UINT iMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
double add_entropy = 0;
|
||||
@@ -682,7 +687,7 @@ static void readtimer(void)
|
||||
|
||||
static void readscreen(void)
|
||||
{
|
||||
-# if !defined(OPENSSL_SYS_WINCE) && !defined(OPENSSL_SYS_WIN32_CYGWIN)
|
||||
+# if !defined(OPENSSL_SYS_WINCE) && !defined(OPENSSL_SYS_WIN32_CYGWIN) && !defined(WINRT_ENABLED)
|
||||
HDC hScrDC; /* screen DC */
|
||||
HBITMAP hBitmap; /* handle for our bitmap */
|
||||
BITMAP bm; /* bitmap properties */
|
||||
diff --git a/drivers/builtin_openssl2/openssl/dtls1.h b/drivers/builtin_openssl2/openssl/dtls1.h
|
||||
index 64ad3c8..a58aca2 100644
|
||||
--- a/drivers/builtin_openssl2/openssl/dtls1.h
|
||||
+++ b/drivers/builtin_openssl2/openssl/dtls1.h
|
||||
@@ -81,6 +81,9 @@
|
||||
# include <sys/time.h>
|
||||
# endif
|
||||
# endif
|
||||
+#ifdef WINRT_ENABLED
|
||||
+#include <winsock2.h>
|
||||
+#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|