android-project/gradlew
author Sam Lantinga
Sun, 05 Apr 2020 08:58:47 -0700
changeset 13689 c3055b205671
parent 11647 5816b27073a4
permissions -rwxr-xr-x
Fixed bug 5015 - SDL_RenderReadPixels on DirectX 11.1 backend seems to be broken

Konrad

It appears that I cannot use SDL_RenderReadPixels on a bound framebuffer (SDL_Texture set as render target) as it simply results in gibberish data. However, drawing that framebuffer into the default target (window surface) does render it correctly. Other backends (OpenGL, software, Direct3D) do work fine.

It looks to me like D3D11_RenderReadPixels just gets the general backbuffer and not the current render target and its backbuffer.

Here is the patch which actually fetches the current render target and its underlying ID3D11Resource which is ID3D11Texture2D.
     1 #!/usr/bin/env bash
     2 
     3 ##############################################################################
     4 ##
     5 ##  Gradle start up script for UN*X
     6 ##
     7 ##############################################################################
     8 
     9 # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
    10 DEFAULT_JVM_OPTS=""
    11 
    12 APP_NAME="Gradle"
    13 APP_BASE_NAME=`basename "$0"`
    14 
    15 # Use the maximum available, or set MAX_FD != -1 to use that value.
    16 MAX_FD="maximum"
    17 
    18 warn ( ) {
    19     echo "$*"
    20 }
    21 
    22 die ( ) {
    23     echo
    24     echo "$*"
    25     echo
    26     exit 1
    27 }
    28 
    29 # OS specific support (must be 'true' or 'false').
    30 cygwin=false
    31 msys=false
    32 darwin=false
    33 case "`uname`" in
    34   CYGWIN* )
    35     cygwin=true
    36     ;;
    37   Darwin* )
    38     darwin=true
    39     ;;
    40   MINGW* )
    41     msys=true
    42     ;;
    43 esac
    44 
    45 # Attempt to set APP_HOME
    46 # Resolve links: $0 may be a link
    47 PRG="$0"
    48 # Need this for relative symlinks.
    49 while [ -h "$PRG" ] ; do
    50     ls=`ls -ld "$PRG"`
    51     link=`expr "$ls" : '.*-> \(.*\)$'`
    52     if expr "$link" : '/.*' > /dev/null; then
    53         PRG="$link"
    54     else
    55         PRG=`dirname "$PRG"`"/$link"
    56     fi
    57 done
    58 SAVED="`pwd`"
    59 cd "`dirname \"$PRG\"`/" >/dev/null
    60 APP_HOME="`pwd -P`"
    61 cd "$SAVED" >/dev/null
    62 
    63 CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
    64 
    65 # Determine the Java command to use to start the JVM.
    66 if [ -n "$JAVA_HOME" ] ; then
    67     if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
    68         # IBM's JDK on AIX uses strange locations for the executables
    69         JAVACMD="$JAVA_HOME/jre/sh/java"
    70     else
    71         JAVACMD="$JAVA_HOME/bin/java"
    72     fi
    73     if [ ! -x "$JAVACMD" ] ; then
    74         die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
    75 
    76 Please set the JAVA_HOME variable in your environment to match the
    77 location of your Java installation."
    78     fi
    79 else
    80     JAVACMD="java"
    81     which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
    82 
    83 Please set the JAVA_HOME variable in your environment to match the
    84 location of your Java installation."
    85 fi
    86 
    87 # Increase the maximum file descriptors if we can.
    88 if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
    89     MAX_FD_LIMIT=`ulimit -H -n`
    90     if [ $? -eq 0 ] ; then
    91         if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
    92             MAX_FD="$MAX_FD_LIMIT"
    93         fi
    94         ulimit -n $MAX_FD
    95         if [ $? -ne 0 ] ; then
    96             warn "Could not set maximum file descriptor limit: $MAX_FD"
    97         fi
    98     else
    99         warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
   100     fi
   101 fi
   102 
   103 # For Darwin, add options to specify how the application appears in the dock
   104 if $darwin; then
   105     GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
   106 fi
   107 
   108 # For Cygwin, switch paths to Windows format before running java
   109 if $cygwin ; then
   110     APP_HOME=`cygpath --path --mixed "$APP_HOME"`
   111     CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
   112     JAVACMD=`cygpath --unix "$JAVACMD"`
   113 
   114     # We build the pattern for arguments to be converted via cygpath
   115     ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
   116     SEP=""
   117     for dir in $ROOTDIRSRAW ; do
   118         ROOTDIRS="$ROOTDIRS$SEP$dir"
   119         SEP="|"
   120     done
   121     OURCYGPATTERN="(^($ROOTDIRS))"
   122     # Add a user-defined pattern to the cygpath arguments
   123     if [ "$GRADLE_CYGPATTERN" != "" ] ; then
   124         OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
   125     fi
   126     # Now convert the arguments - kludge to limit ourselves to /bin/sh
   127     i=0
   128     for arg in "$@" ; do
   129         CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
   130         CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
   131 
   132         if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
   133             eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
   134         else
   135             eval `echo args$i`="\"$arg\""
   136         fi
   137         i=$((i+1))
   138     done
   139     case $i in
   140         (0) set -- ;;
   141         (1) set -- "$args0" ;;
   142         (2) set -- "$args0" "$args1" ;;
   143         (3) set -- "$args0" "$args1" "$args2" ;;
   144         (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
   145         (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
   146         (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
   147         (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
   148         (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
   149         (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
   150     esac
   151 fi
   152 
   153 # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
   154 function splitJvmOpts() {
   155     JVM_OPTS=("$@")
   156 }
   157 eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
   158 JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
   159 
   160 exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"