Evas GL: change function naming and small bug fixes

Summary:
Remove gles1 prefixes for functions that are also used by gles3.
Refactor evgl_make_current a little bit.
Destroy indirect context properly.
Some log message changes and typo fixes.

Test Plan: Local tests on desktop PC

Reviewers: jpeg

Subscribers: mythri, mer.kim, wonsik, cedric

Differential Revision: https://phab.enlightenment.org/D2104
This commit is contained in:
Dongyeon Kim 2015-03-09 17:17:19 +09:00 committed by Jean-Philippe Andre
parent 8cf1dda9df
commit eae786917c
12 changed files with 8218 additions and 169 deletions

View File

228
src/bin/ecore_evas/ecore_evas_svg Executable file
View File

@ -0,0 +1,228 @@
#! /bin/sh
# bin/ecore_evas/ecore_evas_svg - temporary wrapper script for .libs/ecore_evas_svg
# Generated by libtool (GNU libtool) 2.4.5
#
# The bin/ecore_evas/ecore_evas_svg program cannot be directly executed until all the libtool
# libraries that it depends on are installed.
#
# This wrapper script should never be moved out of the build directory.
# If it is, it will not operate correctly.
# Sed substitution that helps us do robust quoting. It backslashifies
# metacharacters that are still active within double-quoted strings.
sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
# Be Bourne compatible
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
# Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
fi
BIN_SH=xpg4; export BIN_SH # for Tru64
DUALCASE=1; export DUALCASE # for MKS sh
# The HP-UX ksh and POSIX shell print the target directory to stdout
# if CDPATH is set.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
relink_command="(cd /home/jpeg/e/core/efl/src; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/opt/e/lib/; export LD_LIBRARY_PATH; PATH=/opt/e/bin:/home/jpeg/bin:/home/jpeg/Applications/.bin:/opt/e/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/jpeg/.gem/ruby/2.1.0/bin; export PATH; gcc -std=gnu99 -g -ggdb3 -W -Wall -Wextra -Wshadow -Wclobbered -o \$progdir/\$file bin/ecore_evas/bin_ecore_evas_ecore_evas_svg-ecore_evas_svg.o -fvisibility=hidden -fdata-sections -ffunction-sections -Wl,--gc-sections -fno-strict-aliasing -Wl,--as-needed -Wl,--no-copy-dt-needed-entries lib/eina/.libs/libeina.so lib/eo/.libs/libeo.so lib/efl/.libs/libefl.so lib/evas/.libs/libevas.so -L/usr/lib lib/eet/.libs/libeet.so lib/ecore/.libs/libecore.so lib/ecore_input/.libs/libecore_input.so lib/ecore_input_evas/.libs/libecore_input_evas.so lib/ecore_evas/.libs/libecore_evas.so /home/jpeg/e/core/efl/src/lib/ecore_input_evas/.libs/libecore_input_evas.so /home/jpeg/e/core/efl/src/lib/evas/.libs/libevas.so -lfribidi -lfontconfig -lfreetype -lluajit-5.1 /home/jpeg/e/core/efl/src/lib/ector/.libs/libector.so /home/jpeg/e/core/efl/src/lib/eet/.libs/libeet.so -lssl -lcrypto -lz -ljpeg -lpng16 /home/jpeg/e/core/efl/src/lib/ecore_input/.libs/libecore_input.so /home/jpeg/e/core/efl/src/lib/ecore/.libs/libecore.so -lgthread-2.0 -lglib-2.0 /home/jpeg/e/core/efl/src/lib/efl/.libs/libefl.so /home/jpeg/e/core/efl/src/lib/eo/.libs/libeo.so /home/jpeg/e/core/efl/src/lib/eina/.libs/libeina.so -lsystemd -lrt -ldl -lm -lpthread -pthread -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/eina/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/eo/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/efl/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/evas/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/eet/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/ecore/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/ecore_input/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/ecore_input_evas/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/ecore_evas/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/ector/.libs)"
# This environment variable determines our operation mode.
if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
# install mode needs the following variables:
generated_by_libtool_version='2.4.5'
notinst_deplibs=' lib/eina/libeina.la lib/eo/libeo.la lib/efl/libefl.la lib/evas/libevas.la lib/eet/libeet.la lib/ecore/libecore.la lib/ecore_input/libecore_input.la lib/ecore_input_evas/libecore_input_evas.la lib/ecore_evas/libecore_evas.la /home/jpeg/e/core/efl/src/lib/ecore_input_evas/libecore_input_evas.la /home/jpeg/e/core/efl/src/lib/evas/libevas.la /home/jpeg/e/core/efl/src/lib/ector/libector.la /home/jpeg/e/core/efl/src/lib/eet/libeet.la /home/jpeg/e/core/efl/src/lib/ecore_input/libecore_input.la /home/jpeg/e/core/efl/src/lib/ecore/libecore.la /home/jpeg/e/core/efl/src/lib/efl/libefl.la /home/jpeg/e/core/efl/src/lib/eo/libeo.la /home/jpeg/e/core/efl/src/lib/eina/libeina.la'
else
# When we are sourced in execute mode, $file and $ECHO are already set.
if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
file="$0"
# A function that is used when there is no print builtin or printf.
func_fallback_echo ()
{
eval 'cat <<_LTECHO_EOF
$1
_LTECHO_EOF'
}
ECHO="printf %s\\n"
fi
# Very basic option parsing. These options are (a) specific to
# the libtool wrapper, (b) are identical between the wrapper
# /script/ and the wrapper /executable/ that is used only on
# windows platforms, and (c) all begin with the string --lt-
# (application programs are unlikely to have options that match
# this pattern).
#
# There are only two supported options: --lt-debug and
# --lt-dump-script. There is, deliberately, no --lt-help.
#
# The first argument to this parsing function should be the
# script's ../libtool value, followed by no.
lt_option_debug=
func_parse_lt_options ()
{
lt_script_arg0=$0
shift
for lt_opt
do
case "$lt_opt" in
--lt-debug) lt_option_debug=1 ;;
--lt-dump-script)
lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'`
cat "$lt_dump_D/$lt_dump_F"
exit 0
;;
--lt-*)
$ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
exit 1
;;
esac
done
# Print the debug banner immediately:
if test -n "$lt_option_debug"; then
echo "ecore_evas_svg:bin/ecore_evas/ecore_evas_svg:$LINENO: libtool wrapper (GNU libtool) 2.4.5" 1>&2
fi
}
# Used when --lt-debug. Prints its arguments to stdout
# (redirection is the responsibility of the caller)
func_lt_dump_args ()
{
lt_dump_args_N=1;
for lt_arg
do
$ECHO "ecore_evas_svg:bin/ecore_evas/ecore_evas_svg:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
lt_dump_args_N=`expr $lt_dump_args_N + 1`
done
}
# Core function for launching the target application
func_exec_program_core ()
{
if test -n "$lt_option_debug"; then
$ECHO "ecore_evas_svg:bin/ecore_evas/ecore_evas_svg:$LINENO: newargv[0]: $progdir/$program" 1>&2
func_lt_dump_args ${1+"$@"} 1>&2
fi
exec "$progdir/$program" ${1+"$@"}
$ECHO "$0: cannot exec $program $*" 1>&2
exit 1
}
# A function to encapsulate launching the target application
# Strips options in the --lt-* namespace from $@ and
# launches target application with the remaining arguments.
func_exec_program ()
{
case " $* " in
*\ --lt-*)
for lt_wr_arg
do
case $lt_wr_arg in
--lt-*) ;;
*) set x "$@" "$lt_wr_arg"; shift;;
esac
shift
done ;;
esac
func_exec_program_core ${1+"$@"}
}
# Parse options
func_parse_lt_options "$0" ${1+"$@"}
# Find the directory that this script lives in.
thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'`
test "x$thisdir" = "x$file" && thisdir=.
# Follow symbolic links until we get to the real thisdir.
file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'`
while test -n "$file"; do
destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'`
# If there was a directory component, then change thisdir.
if test "x$destdir" != "x$file"; then
case "$destdir" in
[\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
*) thisdir="$thisdir/$destdir" ;;
esac
fi
file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'`
file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'`
done
# Usually 'no', except on cygwin/mingw when embedded into
# the cwrapper.
WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
# special case for '.'
if test "$thisdir" = "."; then
thisdir=`pwd`
fi
# remove .libs from thisdir
case "$thisdir" in
*[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;;
.libs ) thisdir=. ;;
esac
fi
# Try to get the absolute directory name.
absdir=`cd "$thisdir" && pwd`
test -n "$absdir" && thisdir="$absdir"
program=lt-'ecore_evas_svg'
progdir="$thisdir/.libs"
if test ! -f "$progdir/$program" ||
{ file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \
test "X$file" != "X$progdir/$program"; }; then
file="$$-$program"
if test ! -d "$progdir"; then
mkdir "$progdir"
else
rm -f "$progdir/$file"
fi
# relink executable if necessary
if test -n "$relink_command"; then
if relink_command_output=`eval $relink_command 2>&1`; then :
else
$ECHO "$relink_command_output" >&2
rm -f "$progdir/$file"
exit 1
fi
fi
mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
{ rm -f "$progdir/$program";
mv -f "$progdir/$file" "$progdir/$program"; }
rm -f "$progdir/$file"
fi
if test -f "$progdir/$program"; then
if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
# Run the actual program with our arguments.
func_exec_program ${1+"$@"}
fi
else
# The program doesn't exist.
$ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
$ECHO "This script is just a wrapper for $program." 1>&2
$ECHO "See the libtool documentation for more information." 1>&2
exit 1
fi
fi

BIN
src/examples/evas/evas-images2 Executable file

Binary file not shown.

BIN
src/examples/evas/evas-map-aa Executable file

Binary file not shown.

View File

@ -0,0 +1,228 @@
#! /bin/sh
# evas_3d_moon_space - temporary wrapper script for .libs/evas_3d_moon_space
# Generated by libtool (GNU libtool) 2.4.2
#
# The evas_3d_moon_space program cannot be directly executed until all the libtool
# libraries that it depends on are installed.
#
# This wrapper script should never be moved out of the build directory.
# If it is, it will not operate correctly.
# Sed substitution that helps us do robust quoting. It backslashifies
# metacharacters that are still active within double-quoted strings.
sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
# Be Bourne compatible
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
# Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
fi
BIN_SH=xpg4; export BIN_SH # for Tru64
DUALCASE=1; export DUALCASE # for MKS sh
# The HP-UX ksh and POSIX shell print the target directory to stdout
# if CDPATH is set.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
relink_command="(cd /home/jpeg/e/core/efl/src/examples/evas; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \"\${LD_LIBRARY_PATH+set}\" || unset LD_LIBRARY_PATH || { LD_LIBRARY_PATH=; export LD_LIBRARY_PATH; }; }; PATH=/home/jpeg/bin:/home/jpeg/Applications/.bin:/opt/e/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/jpeg/.gem/ruby/2.1.0/bin; export PATH; gcc -std=gnu99 -g -ggdb3 -W -Wall -Wextra -Wshadow -Wclobbered -o \$progdir/\$file evas_3d_moon_space-evas-3d-moon-space.o -fvisibility=hidden -fdata-sections -ffunction-sections -Wl,--gc-sections -fno-strict-aliasing -Wl,--as-needed -Wl,--no-copy-dt-needed-entries ../../../src/lib/efl/.libs/libefl.so ../../../src/lib/eina/.libs/libeina.so ../../../src/lib/eo/.libs/libeo.so ../../../src/lib/ecore/.libs/libecore.so ../../../src/lib/ecore_input/.libs/libecore_input.so ../../../src/lib/ecore_evas/.libs/libecore_evas.so -L/usr/lib /home/jpeg/e/core/efl/src/lib/ecore_input_evas/.libs/libecore_input_evas.so /home/jpeg/e/core/efl/src/lib/evas/.libs/libevas.so /home/jpeg/e/core/efl/src/lib/ecore_input/.libs/libecore_input.so /home/jpeg/e/core/efl/src/lib/ecore/.libs/libecore.so -lgthread-2.0 ../../../src/lib/evas/.libs/libevas.so -lfribidi -lglib-2.0 -lfontconfig -lfreetype -lluajit-5.1 /home/jpeg/e/core/efl/src/lib/efl/.libs/libefl.so /home/jpeg/e/core/efl/src/lib/eet/.libs/libeet.so -lssl -lcrypto -lz /home/jpeg/e/core/efl/src/lib/eo/.libs/libeo.so /home/jpeg/e/core/efl/src/lib/eina/.libs/libeina.so -lsystemd -ldl -lrt -ljpeg -lpng16 -lm -lpthread -pthread -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/efl/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/eina/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/eo/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/ecore/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/ecore_input/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/ecore_evas/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/ecore_input_evas/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/evas/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/eet/.libs)"
# This environment variable determines our operation mode.
if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
# install mode needs the following variables:
generated_by_libtool_version='2.4.2'
notinst_deplibs=' ../../../src/lib/efl/libefl.la ../../../src/lib/eina/libeina.la ../../../src/lib/eo/libeo.la ../../../src/lib/ecore/libecore.la ../../../src/lib/ecore_input/libecore_input.la ../../../src/lib/ecore_evas/libecore_evas.la /home/jpeg/e/core/efl/src/lib/ecore_input_evas/libecore_input_evas.la /home/jpeg/e/core/efl/src/lib/evas/libevas.la /home/jpeg/e/core/efl/src/lib/ecore_input/libecore_input.la /home/jpeg/e/core/efl/src/lib/ecore/libecore.la ../../../src/lib/evas/libevas.la /home/jpeg/e/core/efl/src/lib/efl/libefl.la /home/jpeg/e/core/efl/src/lib/eet/libeet.la /home/jpeg/e/core/efl/src/lib/eo/libeo.la /home/jpeg/e/core/efl/src/lib/eina/libeina.la'
else
# When we are sourced in execute mode, $file and $ECHO are already set.
if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
file="$0"
# A function that is used when there is no print builtin or printf.
func_fallback_echo ()
{
eval 'cat <<_LTECHO_EOF
$1
_LTECHO_EOF'
}
ECHO="printf %s\\n"
fi
# Very basic option parsing. These options are (a) specific to
# the libtool wrapper, (b) are identical between the wrapper
# /script/ and the wrapper /executable/ which is used only on
# windows platforms, and (c) all begin with the string --lt-
# (application programs are unlikely to have options which match
# this pattern).
#
# There are only two supported options: --lt-debug and
# --lt-dump-script. There is, deliberately, no --lt-help.
#
# The first argument to this parsing function should be the
# script's ../../../libtool value, followed by no.
lt_option_debug=
func_parse_lt_options ()
{
lt_script_arg0=$0
shift
for lt_opt
do
case "$lt_opt" in
--lt-debug) lt_option_debug=1 ;;
--lt-dump-script)
lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'`
cat "$lt_dump_D/$lt_dump_F"
exit 0
;;
--lt-*)
$ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
exit 1
;;
esac
done
# Print the debug banner immediately:
if test -n "$lt_option_debug"; then
echo "evas_3d_moon_space:evas_3d_moon_space:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2
fi
}
# Used when --lt-debug. Prints its arguments to stdout
# (redirection is the responsibility of the caller)
func_lt_dump_args ()
{
lt_dump_args_N=1;
for lt_arg
do
$ECHO "evas_3d_moon_space:evas_3d_moon_space:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg"
lt_dump_args_N=`expr $lt_dump_args_N + 1`
done
}
# Core function for launching the target application
func_exec_program_core ()
{
if test -n "$lt_option_debug"; then
$ECHO "evas_3d_moon_space:evas_3d_moon_space:${LINENO}: newargv[0]: $progdir/$program" 1>&2
func_lt_dump_args ${1+"$@"} 1>&2
fi
exec "$progdir/$program" ${1+"$@"}
$ECHO "$0: cannot exec $program $*" 1>&2
exit 1
}
# A function to encapsulate launching the target application
# Strips options in the --lt-* namespace from $@ and
# launches target application with the remaining arguments.
func_exec_program ()
{
case " $* " in
*\ --lt-*)
for lt_wr_arg
do
case $lt_wr_arg in
--lt-*) ;;
*) set x "$@" "$lt_wr_arg"; shift;;
esac
shift
done ;;
esac
func_exec_program_core ${1+"$@"}
}
# Parse options
func_parse_lt_options "$0" ${1+"$@"}
# Find the directory that this script lives in.
thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'`
test "x$thisdir" = "x$file" && thisdir=.
# Follow symbolic links until we get to the real thisdir.
file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'`
while test -n "$file"; do
destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'`
# If there was a directory component, then change thisdir.
if test "x$destdir" != "x$file"; then
case "$destdir" in
[\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
*) thisdir="$thisdir/$destdir" ;;
esac
fi
file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'`
file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'`
done
# Usually 'no', except on cygwin/mingw when embedded into
# the cwrapper.
WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
# special case for '.'
if test "$thisdir" = "."; then
thisdir=`pwd`
fi
# remove .libs from thisdir
case "$thisdir" in
*[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;;
.libs ) thisdir=. ;;
esac
fi
# Try to get the absolute directory name.
absdir=`cd "$thisdir" && pwd`
test -n "$absdir" && thisdir="$absdir"
program=lt-'evas_3d_moon_space'
progdir="$thisdir/.libs"
if test ! -f "$progdir/$program" ||
{ file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \
test "X$file" != "X$progdir/$program"; }; then
file="$$-$program"
if test ! -d "$progdir"; then
mkdir "$progdir"
else
rm -f "$progdir/$file"
fi
# relink executable if necessary
if test -n "$relink_command"; then
if relink_command_output=`eval $relink_command 2>&1`; then :
else
printf %s\n "$relink_command_output" >&2
rm -f "$progdir/$file"
exit 1
fi
fi
mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
{ rm -f "$progdir/$program";
mv -f "$progdir/$file" "$progdir/$program"; }
rm -f "$progdir/$file"
fi
if test -f "$progdir/$program"; then
if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
# Run the actual program with our arguments.
func_exec_program ${1+"$@"}
fi
else
# The program doesn't exist.
$ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2
$ECHO "This script is just a wrapper for $program." 1>&2
$ECHO "See the libtool documentation for more information." 1>&2
exit 1
fi
fi

228
src/examples/evas/evas_vg_batman Executable file
View File

@ -0,0 +1,228 @@
#! /bin/sh
# evas_vg_batman - temporary wrapper script for .libs/evas_vg_batman
# Generated by libtool (GNU libtool) 2.4.5
#
# The evas_vg_batman program cannot be directly executed until all the libtool
# libraries that it depends on are installed.
#
# This wrapper script should never be moved out of the build directory.
# If it is, it will not operate correctly.
# Sed substitution that helps us do robust quoting. It backslashifies
# metacharacters that are still active within double-quoted strings.
sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
# Be Bourne compatible
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
# Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
fi
BIN_SH=xpg4; export BIN_SH # for Tru64
DUALCASE=1; export DUALCASE # for MKS sh
# The HP-UX ksh and POSIX shell print the target directory to stdout
# if CDPATH is set.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
relink_command="(cd /home/jpeg/e/core/efl/src/examples/evas; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/opt/e/lib/; export LD_LIBRARY_PATH; PATH=/opt/e/bin:/home/jpeg/bin:/home/jpeg/Applications/.bin:/opt/e/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/jpeg/.gem/ruby/2.1.0/bin; export PATH; gcc -std=gnu99 -g -ggdb3 -W -Wall -Wextra -Wshadow -Wclobbered -o \$progdir/\$file evas_vg_batman-evas-vg-batman.o -fvisibility=hidden -fdata-sections -ffunction-sections -Wl,--gc-sections -fno-strict-aliasing -Wl,--as-needed -Wl,--no-copy-dt-needed-entries ../../../src/lib/efl/.libs/libefl.so ../../../src/lib/eina/.libs/libeina.so ../../../src/lib/eo/.libs/libeo.so ../../../src/lib/ecore/.libs/libecore.so ../../../src/lib/ecore_file/.libs/libecore_file.so -L/usr/lib /home/jpeg/e/core/efl/src/lib/ecore_con/.libs/libecore_con.so ../../../src/lib/ecore_input/.libs/libecore_input.so ../../../src/lib/ecore_evas/.libs/libecore_evas.so /home/jpeg/e/core/efl/src/lib/ecore_input_evas/.libs/libecore_input_evas.so /home/jpeg/e/core/efl/src/lib/evas/.libs/libevas.so /home/jpeg/e/core/efl/src/lib/ecore_input/.libs/libecore_input.so /home/jpeg/e/core/efl/src/lib/ecore/.libs/libecore.so -lgthread-2.0 ../../../src/lib/ector/.libs/libector.so ../../../src/lib/evas/.libs/libevas.so -lfribidi -lglib-2.0 -lfontconfig -lfreetype -lluajit-5.1 /home/jpeg/e/core/efl/src/lib/ector/.libs/libector.so /home/jpeg/e/core/efl/src/lib/efl/.libs/libefl.so /home/jpeg/e/core/efl/src/lib/eet/.libs/libeet.so -lssl -lcrypto -lz /home/jpeg/e/core/efl/src/lib/eo/.libs/libeo.so /home/jpeg/e/core/efl/src/lib/eina/.libs/libeina.so -lsystemd -lpthread -ldl -lrt -ljpeg -lpng16 -lm -pthread -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/efl/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/eina/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/eo/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/ecore/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/ecore_file/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/ecore_con/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/ecore_input/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/ecore_evas/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/ecore_input_evas/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/evas/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/ector/.libs -Wl,-rpath -Wl,/home/jpeg/e/core/efl/src/lib/eet/.libs)"
# This environment variable determines our operation mode.
if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
# install mode needs the following variables:
generated_by_libtool_version='2.4.5'
notinst_deplibs=' ../../../src/lib/efl/libefl.la ../../../src/lib/eina/libeina.la ../../../src/lib/eo/libeo.la ../../../src/lib/ecore/libecore.la ../../../src/lib/ecore_file/libecore_file.la /home/jpeg/e/core/efl/src/lib/ecore_con/libecore_con.la ../../../src/lib/ecore_input/libecore_input.la ../../../src/lib/ecore_evas/libecore_evas.la /home/jpeg/e/core/efl/src/lib/ecore_input_evas/libecore_input_evas.la /home/jpeg/e/core/efl/src/lib/evas/libevas.la /home/jpeg/e/core/efl/src/lib/ecore_input/libecore_input.la /home/jpeg/e/core/efl/src/lib/ecore/libecore.la ../../../src/lib/ector/libector.la ../../../src/lib/evas/libevas.la /home/jpeg/e/core/efl/src/lib/ector/libector.la /home/jpeg/e/core/efl/src/lib/efl/libefl.la /home/jpeg/e/core/efl/src/lib/eet/libeet.la /home/jpeg/e/core/efl/src/lib/eo/libeo.la /home/jpeg/e/core/efl/src/lib/eina/libeina.la'
else
# When we are sourced in execute mode, $file and $ECHO are already set.
if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
file="$0"
# A function that is used when there is no print builtin or printf.
func_fallback_echo ()
{
eval 'cat <<_LTECHO_EOF
$1
_LTECHO_EOF'
}
ECHO="printf %s\\n"
fi
# Very basic option parsing. These options are (a) specific to
# the libtool wrapper, (b) are identical between the wrapper
# /script/ and the wrapper /executable/ that is used only on
# windows platforms, and (c) all begin with the string --lt-
# (application programs are unlikely to have options that match
# this pattern).
#
# There are only two supported options: --lt-debug and
# --lt-dump-script. There is, deliberately, no --lt-help.
#
# The first argument to this parsing function should be the
# script's ../../../libtool value, followed by no.
lt_option_debug=
func_parse_lt_options ()
{
lt_script_arg0=$0
shift
for lt_opt
do
case "$lt_opt" in
--lt-debug) lt_option_debug=1 ;;
--lt-dump-script)
lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'`
cat "$lt_dump_D/$lt_dump_F"
exit 0
;;
--lt-*)
$ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
exit 1
;;
esac
done
# Print the debug banner immediately:
if test -n "$lt_option_debug"; then
echo "evas_vg_batman:evas_vg_batman:$LINENO: libtool wrapper (GNU libtool) 2.4.5" 1>&2
fi
}
# Used when --lt-debug. Prints its arguments to stdout
# (redirection is the responsibility of the caller)
func_lt_dump_args ()
{
lt_dump_args_N=1;
for lt_arg
do
$ECHO "evas_vg_batman:evas_vg_batman:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
lt_dump_args_N=`expr $lt_dump_args_N + 1`
done
}
# Core function for launching the target application
func_exec_program_core ()
{
if test -n "$lt_option_debug"; then
$ECHO "evas_vg_batman:evas_vg_batman:$LINENO: newargv[0]: $progdir/$program" 1>&2
func_lt_dump_args ${1+"$@"} 1>&2
fi
exec "$progdir/$program" ${1+"$@"}
$ECHO "$0: cannot exec $program $*" 1>&2
exit 1
}
# A function to encapsulate launching the target application
# Strips options in the --lt-* namespace from $@ and
# launches target application with the remaining arguments.
func_exec_program ()
{
case " $* " in
*\ --lt-*)
for lt_wr_arg
do
case $lt_wr_arg in
--lt-*) ;;
*) set x "$@" "$lt_wr_arg"; shift;;
esac
shift
done ;;
esac
func_exec_program_core ${1+"$@"}
}
# Parse options
func_parse_lt_options "$0" ${1+"$@"}
# Find the directory that this script lives in.
thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'`
test "x$thisdir" = "x$file" && thisdir=.
# Follow symbolic links until we get to the real thisdir.
file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'`
while test -n "$file"; do
destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'`
# If there was a directory component, then change thisdir.
if test "x$destdir" != "x$file"; then
case "$destdir" in
[\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
*) thisdir="$thisdir/$destdir" ;;
esac
fi
file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'`
file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'`
done
# Usually 'no', except on cygwin/mingw when embedded into
# the cwrapper.
WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
# special case for '.'
if test "$thisdir" = "."; then
thisdir=`pwd`
fi
# remove .libs from thisdir
case "$thisdir" in
*[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;;
.libs ) thisdir=. ;;
esac
fi
# Try to get the absolute directory name.
absdir=`cd "$thisdir" && pwd`
test -n "$absdir" && thisdir="$absdir"
program=lt-'evas_vg_batman'
progdir="$thisdir/.libs"
if test ! -f "$progdir/$program" ||
{ file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \
test "X$file" != "X$progdir/$program"; }; then
file="$$-$program"
if test ! -d "$progdir"; then
mkdir "$progdir"
else
rm -f "$progdir/$file"
fi
# relink executable if necessary
if test -n "$relink_command"; then
if relink_command_output=`eval $relink_command 2>&1`; then :
else
$ECHO "$relink_command_output" >&2
rm -f "$progdir/$file"
exit 1
fi
fi
mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
{ rm -f "$progdir/$program";
mv -f "$progdir/$file" "$progdir/$program"; }
rm -f "$progdir/$file"
fi
if test -f "$progdir/$program"; then
if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
# Run the actual program with our arguments.
func_exec_program ${1+"$@"}
fi
else
# The program doesn't exist.
$ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
$ECHO "This script is just a wrapper for $program." 1>&2
$ECHO "See the libtool documentation for more information." 1>&2
exit 1
fi
fi

File diff suppressed because it is too large Load Diff

View File

@ -120,7 +120,7 @@ _evgl_egl_display_get(const char *function)
if (!rsc->current_eng)
{
ERR("%s: Unable to retrive Current Engine", function);
ERR("%s: Unable to retrieve Current Engine", function);
evas_gl_common_error_set(NULL, EVAS_GL_NOT_INITIALIZED);
return EGL_NO_DISPLAY;
}

File diff suppressed because it is too large Load Diff

View File

@ -1624,19 +1624,19 @@ evgl_surface_create(void *eng_data, Evas_GL_Config *cfg, int w, int h)
goto error;
}
// Allocate a special surface for 1.1 and 3.x
// Allocate indirect surface for fallback rendering
if ((cfg->gles_version == EVAS_GL_GLES_1_X) ||
(cfg->gles_version == EVAS_GL_GLES_3_X))
{
if (!evgl_engine->funcs->gles_pixmap_surface_create)
if (!evgl_engine->funcs->indirect_surface_create)
{
ERR("Can't create %s surfaces",(cfg->gles_version == EVAS_GL_GLES_1_X)?"GLES 1.1":"GLES 3");
ERR("Cannot create indirect surface");
evas_gl_common_error_set(eng_data, EVAS_GL_NOT_INITIALIZED);
goto error;
}
INF("Creating special surface for GLES 1.x/3.x rendering");
evgl_engine->funcs->gles_pixmap_surface_create(evgl_engine, eng_data, sfc, cfg, w, h);
INF("Creating indirect surface for fallback rendering");
evgl_engine->funcs->indirect_surface_create(evgl_engine, eng_data, sfc, cfg, w, h);
}
// Create internal buffers
@ -1672,15 +1672,15 @@ evgl_surface_create(void *eng_data, Evas_GL_Config *cfg, int w, int h)
if (sfc->direct_fb_opt)
{
if (!sfc->gles1_indirect)
if (!sfc->indirect)
{
eina_hash_add(evgl_engine->direct_surfaces, &sfc->color_buf, sfc);
DBG("Added tex %d as direct surface: %p", sfc->color_buf, sfc);
}
else
{
eina_hash_add(evgl_engine->direct_surfaces, &sfc->gles1_sfc_native, sfc);
DBG("Added native %p as direct surface: %p", sfc->gles1_sfc_native, sfc);
eina_hash_add(evgl_engine->direct_surfaces, &sfc->indirect_sfc_native, sfc);
DBG("Added native %p as direct surface: %p", sfc->indirect_sfc_native, sfc);
}
}
LKU(evgl_engine->resource_lock);
@ -1865,24 +1865,24 @@ evgl_surface_destroy(void *eng_data, EVGL_Surface *sfc)
}
}
// Destroy surface used for 1.1
if (sfc->gles1_indirect)
// Destroy indirect surface
if (sfc->indirect)
{
int ret;
if (dbg) DBG("sfc %p is used for GLES 1.x indirect rendering", sfc);
if (dbg) DBG("sfc %p is used for indirect rendering", sfc);
if (!evgl_engine->funcs->gles_pixmap_surface_destroy)
if (!evgl_engine->funcs->indirect_surface_destroy)
{
ERR("Error destroying GLES 1.x/3.x surface");
ERR("Error destroying indirect surface");
return 0;
}
DBG("Destroying special surface used for GLES 1.x/3.x rendering");
ret = evgl_engine->funcs->gles_pixmap_surface_destroy(eng_data, sfc);
DBG("Destroying special surface used for indirect rendering");
ret = evgl_engine->funcs->indirect_surface_destroy(eng_data, sfc);
if (!ret)
{
ERR("Engine failed to destroy a GLES1.x/3.x Surface.");
ERR("Engine failed to destroy indirect surface.");
return ret;
}
}
@ -2041,11 +2041,11 @@ evgl_context_destroy(void *eng_data, EVGL_Context *ctx)
return 0;
}
// Destroy GLES1/GLES3 indirect rendering context
if (ctx->gles_ir_context &&
!evgl_engine->funcs->context_destroy(eng_data, ctx->context))
// Destroy indirect rendering context
if (ctx->indirect_context &&
!evgl_engine->funcs->context_destroy(eng_data, ctx->indirect_context))
{
ERR("Error destroying the GLES1 context.");
ERR("Error destroying the indirect context.");
return 0;
}
@ -2199,10 +2199,10 @@ evgl_make_current(void *eng_data, EVGL_Surface *sfc, EVGL_Context *ctx)
// GLES 1.x and 3.x
if ((ctx->version == EVAS_GL_GLES_1_X) || (ctx->version == EVAS_GL_GLES_3_X))
{
if (dbg) DBG("ctx %p is GLES 1", ctx);
if (dbg) DBG("ctx %p is GLES %d", ctx, ctx->version);
if (_evgl_direct_renderable(rsc, sfc))
{
// Transition from pixmap surface rendering to direct rendering
// Transition from indirect rendering to direct rendering
if (!rsc->direct.rendered)
{
// Restore viewport and scissor test to direct rendering mode
@ -2215,20 +2215,20 @@ evgl_make_current(void *eng_data, EVGL_Surface *sfc, EVGL_Context *ctx)
}
else
{
if (!ctx->gles_ir_context)
if (!ctx->indirect_context)
{
ctx->gles_ir_context =
ctx->indirect_context =
evgl_engine->funcs->gles_context_create(eng_data, ctx, sfc);
}
if (dbg) DBG("Calling make_current(%p, %p)", sfc->gles1_sfc, ctx->context);
if (!evgl_engine->funcs->make_current(eng_data, sfc->gles1_sfc,
ctx->gles_ir_context, EINA_TRUE))
if (dbg) DBG("Calling make_current(%p, %p)", sfc->indirect_sfc, ctx->context);
if (!evgl_engine->funcs->make_current(eng_data, sfc->indirect_sfc,
ctx->indirect_context, EINA_TRUE))
{
ERR("Failed to make current with GLES1 indirect surface.");
ERR("Failed to make current with indirect surface.");
return 0;
}
// Transition from direct rendering to pixmap surface rendering
// Transition from direct rendering to indirect rendering
if (rsc->direct.rendered)
{
glViewport(ctx->viewport_coord[0], ctx->viewport_coord[1], ctx->viewport_coord[2], ctx->viewport_coord[3]);
@ -2240,10 +2240,6 @@ evgl_make_current(void *eng_data, EVGL_Surface *sfc, EVGL_Context *ctx)
rsc->direct.rendered = 0;
}
ctx->current_sfc = sfc;
rsc->current_ctx = ctx;
rsc->current_eng = eng_data;
// Update GLESv1 extension functions after GLESv1 context is bound
if (ctx->version == EVAS_GL_GLES_1_X)
{
@ -2254,108 +2250,107 @@ evgl_make_current(void *eng_data, EVGL_Surface *sfc, EVGL_Context *ctx)
evgl_api_gles3_ext_get(gles3_funcs);
}
_surface_context_list_print();
return 1;
}
// GLES 2+ below
// Normal FBO Rendering
// Create FBO if it hasn't been created
if (!ctx->surface_fbo)
glGenFramebuffers(1, &ctx->surface_fbo);
// Direct Rendering
if (_evgl_direct_renderable(rsc, sfc))
{
if (dbg) DBG("sfc %p is direct renderable.", sfc);
// This is to transition from FBO rendering to direct rendering
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &curr_fbo);
if (ctx->surface_fbo == (GLuint)curr_fbo)
{
glBindFramebuffer(GL_FRAMEBUFFER, 0);
ctx->current_fbo = 0;
}
else if (ctx->current_sfc && (ctx->current_sfc->pbuffer.is_pbuffer))
{
// Using the same context, we were rendering on a pbuffer
glBindFramebuffer(GL_FRAMEBUFFER, 0);
ctx->current_fbo = 0;
}
if (ctx->current_fbo == 0)
{
// If master clip is set and clip is greater than 0, do partial render
if (rsc->direct.partial.enabled)
{
if (!ctx->partial_render)
{
evgl_direct_partial_render_start();
ctx->partial_render = 1;
}
}
}
rsc->direct.rendered = 1;
}
else if (sfc->pbuffer.native_surface)
{
if (dbg) DBG("Surface sfc %p is a pbuffer: %p", sfc, sfc->pbuffer.native_surface);
// Call end tiling
if (rsc->direct.partial.enabled)
evgl_direct_partial_render_end();
if (sfc->color_buf)
{
if (!_surface_buffers_fbo_set(sfc, sfc->color_buf))
ERR("Could not detach current FBO");
}
if (dbg) DBG("Calling make_current(%p, %p)", sfc->pbuffer.native_surface, ctx->context);
evgl_engine->funcs->make_current(eng_data, sfc->pbuffer.native_surface,
ctx->context, EINA_TRUE);
// Bind to the previously bound buffer (may be 0)
if (ctx->current_fbo)
glBindFramebuffer(GL_FRAMEBUFFER, ctx->current_fbo);
rsc->direct.rendered = 0;
}
else
{
if (dbg) DBG("Surface sfc %p is a normal surface.", sfc);
// GLES 2+ below
// Attach fbo and the buffers
if ((rsc->current_ctx != ctx) || (ctx->current_sfc != sfc) || (rsc->direct.rendered))
// Normal FBO Rendering
// Create FBO if it hasn't been created
if (!ctx->surface_fbo)
glGenFramebuffers(1, &ctx->surface_fbo);
// Direct Rendering
if (_evgl_direct_renderable(rsc, sfc))
{
sfc->current_ctx = ctx;
if ((evgl_engine->direct_mem_opt) && (evgl_engine->direct_override))
{
DBG("Not creating fallback surfaces even though it should. Use at OWN discretion!");
}
else
{
// If it's transitioning from direct render to fbo render
// Call end tiling
if (rsc->direct.partial.enabled)
evgl_direct_partial_render_end();
if (dbg) DBG("sfc %p is direct renderable.", sfc);
if (!_surface_buffers_fbo_set(sfc, ctx->surface_fbo))
// This is to transition from FBO rendering to direct rendering
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &curr_fbo);
if (ctx->surface_fbo == (GLuint)curr_fbo)
{
glBindFramebuffer(GL_FRAMEBUFFER, 0);
ctx->current_fbo = 0;
}
else if (ctx->current_sfc && (ctx->current_sfc->pbuffer.is_pbuffer))
{
// Using the same context, we were rendering on a pbuffer
glBindFramebuffer(GL_FRAMEBUFFER, 0);
ctx->current_fbo = 0;
}
if (ctx->current_fbo == 0)
{
// If master clip is set and clip is greater than 0, do partial render
if (rsc->direct.partial.enabled)
{
ERR("Attaching buffers to context fbo failed. Engine: %p Surface: %p Context FBO: %u", evgl_engine, sfc, ctx->surface_fbo);
evas_gl_common_error_set(eng_data, EVAS_GL_BAD_CONTEXT);
return 0;
if (!ctx->partial_render)
{
evgl_direct_partial_render_start();
ctx->partial_render = 1;
}
}
}
// Bind to the previously bound buffer
rsc->direct.rendered = 1;
}
else if (sfc->pbuffer.native_surface)
{
if (dbg) DBG("Surface sfc %p is a pbuffer: %p", sfc, sfc->pbuffer.native_surface);
// Call end tiling
if (rsc->direct.partial.enabled)
evgl_direct_partial_render_end();
if (sfc->color_buf)
{
if (!_surface_buffers_fbo_set(sfc, sfc->color_buf))
ERR("Could not detach current FBO");
}
if (dbg) DBG("Calling make_current(%p, %p)", sfc->pbuffer.native_surface, ctx->context);
evgl_engine->funcs->make_current(eng_data, sfc->pbuffer.native_surface,
ctx->context, EINA_TRUE);
// Bind to the previously bound buffer (may be 0)
if (ctx->current_fbo)
glBindFramebuffer(GL_FRAMEBUFFER, ctx->current_fbo);
rsc->direct.rendered = 0;
}
else
{
if (dbg) DBG("Surface sfc %p is a normal surface.", sfc);
// Attach fbo and the buffers
if ((rsc->current_ctx != ctx) || (ctx->current_sfc != sfc) || (rsc->direct.rendered))
{
sfc->current_ctx = ctx;
if ((evgl_engine->direct_mem_opt) && (evgl_engine->direct_override))
{
DBG("Not creating fallback surfaces even though it should. Use at OWN discretion!");
}
else
{
// If it's transitioning from direct render to fbo render
// Call end tiling
if (rsc->direct.partial.enabled)
evgl_direct_partial_render_end();
if (!_surface_buffers_fbo_set(sfc, ctx->surface_fbo))
{
ERR("Attaching buffers to context fbo failed. Engine: %p Surface: %p Context FBO: %u", evgl_engine, sfc, ctx->surface_fbo);
evas_gl_common_error_set(eng_data, EVAS_GL_BAD_CONTEXT);
return 0;
}
}
// Bind to the previously bound buffer
if (ctx->current_fbo)
glBindFramebuffer(GL_FRAMEBUFFER, ctx->current_fbo);
}
rsc->direct.rendered = 0;
}
rsc->direct.rendered = 0;
}
ctx->current_sfc = sfc;
@ -2443,7 +2438,7 @@ evgl_native_surface_get(EVGL_Surface *sfc, Evas_Native_Surface *ns)
return 0;
}
if (!sfc->gles1_indirect)
if (!sfc->indirect)
{
ns->type = EVAS_NATIVE_SURFACE_OPENGL;
ns->version = EVAS_NATIVE_SURFACE_VERSION;
@ -2458,8 +2453,8 @@ evgl_native_surface_get(EVGL_Surface *sfc, Evas_Native_Surface *ns)
{
ns->type = EVAS_NATIVE_SURFACE_X11;
ns->version = EVAS_NATIVE_SURFACE_VERSION;
ns->data.x11.pixmap = (unsigned long)(intptr_t)sfc->gles1_sfc_native;
ns->data.x11.visual = sfc->gles1_sfc_visual;
ns->data.x11.pixmap = (unsigned long)(intptr_t)sfc->indirect_sfc_native;
ns->data.x11.visual = sfc->indirect_sfc_visual;
}
return 1;

View File

@ -70,10 +70,10 @@ struct _EVGL_Interface
int (*pbuffer_surface_destroy)(void *data, void *surface);
// Create a surface for 1.x & 3.x rendering (could be pbuffer or xpixmap for instance)
void *(*gles_pixmap_surface_create)(EVGL_Engine *evgl, void *data, EVGL_Surface *evgl_sfc, Evas_GL_Config *cfg, int w, int h);
void *(*indirect_surface_create)(EVGL_Engine *evgl, void *data, EVGL_Surface *evgl_sfc, Evas_GL_Config *cfg, int w, int h);
// Destroy 1.x & 3.x surface (could be pbuffer or xpixmap for instance)
int (*gles_pixmap_surface_destroy)(void *data, EVGL_Surface *evgl_sfc);
int (*indirect_surface_destroy)(void *data, EVGL_Surface *evgl_sfc);
// Create an indirect rendering context for GLES 1.x
void *(*gles_context_create)(void *data, EVGL_Context *share_ctx, EVGL_Surface *evgl_sfc);
@ -114,9 +114,8 @@ struct _EVGL_Surface
unsigned client_side_rotation : 1;
unsigned alpha : 1;
// Flag indicating this surface is used for GLES 1 indirect rendering
unsigned gles1_indirect : 1;
unsigned xpixmap : 1;
// Flag indicating this surface is used for indirect rendering
unsigned indirect : 1;
// Moved from evgl_engine
unsigned direct_override : 1;
@ -133,11 +132,11 @@ struct _EVGL_Surface
int buffer_mem[4];
//-------------------------//
// Used if gles1_indirect == 1
EVGLNative_Surface gles1_sfc;
void *gles1_sfc_native;
void *gles1_sfc_visual;
void *gles1_sfc_config;
// Used if indirect == 1
EVGLNative_Surface indirect_sfc;
void *indirect_sfc_native;
void *indirect_sfc_visual;
void *indirect_sfc_config;
//-------------------------//
// Related to PBuffer Surface
@ -178,7 +177,7 @@ struct _EVGL_Context
int viewport_direct[4];
// For GLES1/GLES3 with indirect rendering
EVGLNative_Context gles_ir_context;
EVGLNative_Context indirect_context;
// Partial Rendering
int partial_render;

View File

@ -876,13 +876,13 @@ evgl_eng_pbuffer_surface_destroy(void *data, void *surface)
}
// This function should create a surface that can be used for offscreen rendering
// with GLES 1.x, and GLES 3.x nd still be bindable to a texture in Evas main GL context.
// and still be bindable to a texture in Evas main GL context.
// For now, this will create an X pixmap... Ideally it should be able to create
// a bindable pbuffer surface or just an FBO if that is supported and it can
// be shared with Evas.
// FIXME: Avoid passing evgl_engine around like that.
static void *
evgl_eng_gles_pixmap_surface_create(EVGL_Engine *evgl EINA_UNUSED, void *data,
evgl_eng_indirect_surface_create(EVGL_Engine *evgl EINA_UNUSED, void *data,
EVGL_Surface *evgl_sfc,
Evas_GL_Config *cfg, int w, int h)
{
@ -959,7 +959,7 @@ try_again:
config_attrs[i++] = EGL_SURFACE_TYPE;
config_attrs[i++] = EGL_PIXMAP_BIT;
config_attrs[i++] = EGL_RENDERABLE_TYPE;
if(cfg->gles_version == EVAS_GL_GLES_3_X)
if (cfg->gles_version == EVAS_GL_GLES_3_X)
config_attrs[i++] = EGL_OPENGL_ES3_BIT;
else
config_attrs[i++] = EGL_OPENGL_ES_BIT;
@ -1090,32 +1090,29 @@ try_again:
return NULL;
}
evgl_sfc->gles1_indirect = EINA_TRUE;
evgl_sfc->xpixmap = EINA_TRUE;
evgl_sfc->gles1_sfc = egl_sfc;
evgl_sfc->gles1_sfc_native = (void *)(intptr_t) px;
evgl_sfc->gles1_sfc_visual = visual;
evgl_sfc->gles1_sfc_config = egl_cfg;
DBG("Successfully created GLES1 surface: Pixmap %lu EGLSurface %p", px, egl_sfc);
evgl_sfc->indirect = EINA_TRUE;
evgl_sfc->indirect_sfc = egl_sfc;
evgl_sfc->indirect_sfc_native = (void *)(intptr_t) px;
evgl_sfc->indirect_sfc_visual = visual;
evgl_sfc->indirect_sfc_config = egl_cfg;
DBG("Successfully created indirect surface: Pixmap %lu EGLSurface %p", px, egl_sfc);
return evgl_sfc;
#else
// TODO/FIXME: do the same as with EGL above...
ERR("GLX support is not fully implemented for GLES 1.x");
ERR("GLX support is not fully implemented for indirect surface");
evgl_sfc->gles1_indirect = EINA_TRUE;
evgl_sfc->xpixmap = EINA_TRUE;
evgl_sfc->gles1_sfc_native = (void *)(intptr_t) px;
evgl_sfc->gles1_sfc = (void *)(intptr_t) px;
evgl_sfc->gles1_sfc_visual = eng_get_ob(re)->info->info.visual; // FIXME: Check this!
evgl_sfc->indirect = EINA_TRUE;
evgl_sfc->indirect_sfc_native = (void *)(intptr_t) px;
evgl_sfc->indirect_sfc = (void *)(intptr_t) px;
evgl_sfc->indirect_sfc_visual = eng_get_ob(re)->info->info.visual; // FIXME: Check this!
return evgl_sfc;
#endif
}
// This function should destroy the surface used for offscreen rendering
// with GLES 1.x and GLES 3.x .This will also destroy the X pixmap...
// This function should destroy the indirect surface as well as the X pixmap
static int
evgl_eng_gles_pixmap_surface_destroy(void *data, EVGL_Surface *evgl_sfc)
evgl_eng_indirect_surface_destroy(void *data, EVGL_Surface *evgl_sfc)
{
Render_Engine *re = (Render_Engine *)data;
@ -1127,24 +1124,24 @@ evgl_eng_gles_pixmap_surface_destroy(void *data, EVGL_Surface *evgl_sfc)
}
#ifdef GL_GLES
if ((!evgl_sfc) || (!evgl_sfc->gles1_sfc))
if ((!evgl_sfc) || (!evgl_sfc->indirect_sfc))
{
ERR("Invalid surface.");
ERR("Invalid surface");
glsym_evas_gl_common_error_set(data, EVAS_GL_BAD_SURFACE);
return 0;
}
eglDestroySurface(eng_get_ob(re)->egl_disp, (EGLSurface)evgl_sfc->gles1_sfc);
eglDestroySurface(eng_get_ob(re)->egl_disp, (EGLSurface)evgl_sfc->indirect_sfc);
#endif
if (!evgl_sfc->gles1_sfc_native)
if (!evgl_sfc->indirect_sfc_native)
{
ERR("Inconsistent parameters, not freeing XPixmap for gles1 surface!");
ERR("Inconsistent parameters, not freeing XPixmap for indirect surface!");
glsym_evas_gl_common_error_set(data, EVAS_GL_BAD_PARAMETER);
return 0;
}
XFreePixmap(eng_get_ob(re)->disp, (Pixmap)evgl_sfc->gles1_sfc_native);
XFreePixmap(eng_get_ob(re)->disp, (Pixmap)evgl_sfc->indirect_sfc_native);
return 1;
}
@ -1171,13 +1168,13 @@ evgl_eng_gles_context_create(void *data,
context_attrs[1] = share_ctx->version;
context_attrs[2] = EGL_NONE;
if (!sfc || !sfc->gles1_sfc_config)
if (!sfc || !sfc->indirect_sfc_config)
{
ERR("Surface is not set! Creating context anyways but eglMakeCurrent "
"might very well fail with EGL_BAD_MATCH (0x3009)");
config = eng_get_ob(re)->egl_config;
}
else config = sfc->gles1_sfc_config;
else config = sfc->indirect_sfc_config;
context = eglCreateContext(eng_get_ob(re)->egl_disp, config,
share_ctx ? share_ctx->context : NULL,
@ -1190,10 +1187,10 @@ evgl_eng_gles_context_create(void *data,
return NULL;
}
DBG("Successfully created context for GLES1 indirect rendering.");
DBG("Successfully created context for indirect rendering.");
return context;
#else
CRI("Support for GLES1/GLES3 indirect rendering contexts is not implemented for GLX");
CRI("Support for indirect rendering contexts is not implemented for GLX");
(void) share_ctx; (void) sfc;
return NULL;
#endif
@ -1236,9 +1233,9 @@ static const EVGL_Interface evgl_funcs =
evgl_eng_rotation_angle_get,
evgl_eng_pbuffer_surface_create,
evgl_eng_pbuffer_surface_destroy,
evgl_eng_gles1_surface_create,
evgl_eng_gles1_surface_destroy,
evgl_eng_gles1_context_create,
evgl_eng_indirect_surface_create,
evgl_eng_indirect_surface_destroy,
evgl_eng_gles_context_create,
evgl_eng_native_win_surface_config_check,
};