acinclude/alsa.m4
author Sam Lantinga
Sun, 05 Apr 2020 08:58:47 -0700
changeset 13689 c3055b205671
parent 3342 3da232c5980a
permissions -rw-r--r--
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.
slouken@3342
     1
##############################################################################
slouken@3342
     2
dnl Configure Paths for Alsa
slouken@3342
     3
dnl Some modifications by Richard Boulton <richard-alsa@tartarus.org>
slouken@3342
     4
dnl Christopher Lansdown <lansdoct@cs.alfred.edu>
slouken@3342
     5
dnl Jaroslav Kysela <perex@suse.cz>
slouken@3342
     6
dnl Last modification: alsa.m4,v 1.23 2004/01/16 18:14:22 tiwai Exp
slouken@3342
     7
dnl AM_PATH_ALSA([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
slouken@3342
     8
dnl Test for libasound, and define ALSA_CFLAGS and ALSA_LIBS as appropriate.
slouken@3342
     9
dnl enables arguments --with-alsa-prefix=
slouken@3342
    10
dnl                   --with-alsa-enc-prefix=
slouken@3342
    11
dnl                   --disable-alsatest
slouken@3342
    12
dnl
slouken@3342
    13
dnl For backwards compatibility, if ACTION_IF_NOT_FOUND is not specified,
slouken@3342
    14
dnl and the alsa libraries are not found, a fatal AC_MSG_ERROR() will result.
slouken@3342
    15
dnl
slouken@3342
    16
AC_DEFUN([AM_PATH_ALSA],
slouken@3342
    17
[dnl Save the original CFLAGS, LDFLAGS, and LIBS
slouken@3342
    18
alsa_save_CFLAGS="$CFLAGS"
slouken@3342
    19
alsa_save_LDFLAGS="$LDFLAGS"
slouken@3342
    20
alsa_save_LIBS="$LIBS"
slouken@3342
    21
alsa_found=yes
slouken@3342
    22
slouken@3342
    23
dnl
slouken@3342
    24
dnl Get the cflags and libraries for alsa
slouken@3342
    25
dnl
slouken@3342
    26
AC_ARG_WITH(alsa-prefix,
slouken@3342
    27
[  --with-alsa-prefix=PFX  Prefix where Alsa library is installed(optional)],
slouken@3342
    28
[alsa_prefix="$withval"], [alsa_prefix=""])
slouken@3342
    29
slouken@3342
    30
AC_ARG_WITH(alsa-inc-prefix,
slouken@3342
    31
[  --with-alsa-inc-prefix=PFX  Prefix where include libraries are (optional)],
slouken@3342
    32
[alsa_inc_prefix="$withval"], [alsa_inc_prefix=""])
slouken@3342
    33
slouken@3342
    34
dnl FIXME: this is not yet implemented
slouken@3342
    35
AC_ARG_ENABLE(alsatest,
slouken@3342
    36
[  --disable-alsatest      Do not try to compile and run a test Alsa program],
slouken@3342
    37
[enable_alsatest="$enableval"],
slouken@3342
    38
[enable_alsatest=yes])
slouken@3342
    39
slouken@3342
    40
dnl Add any special include directories
slouken@3342
    41
AC_MSG_CHECKING(for ALSA CFLAGS)
slouken@3342
    42
if test "$alsa_inc_prefix" != "" ; then
slouken@3342
    43
	ALSA_CFLAGS="$ALSA_CFLAGS -I$alsa_inc_prefix"
slouken@3342
    44
	CFLAGS="$CFLAGS -I$alsa_inc_prefix"
slouken@3342
    45
fi
slouken@3342
    46
AC_MSG_RESULT($ALSA_CFLAGS)
slouken@3342
    47
slouken@3342
    48
dnl add any special lib dirs
slouken@3342
    49
AC_MSG_CHECKING(for ALSA LDFLAGS)
slouken@3342
    50
if test "$alsa_prefix" != "" ; then
slouken@3342
    51
	ALSA_LIBS="$ALSA_LIBS -L$alsa_prefix"
slouken@3342
    52
	LDFLAGS="$LDFLAGS $ALSA_LIBS"
slouken@3342
    53
fi
slouken@3342
    54
slouken@3342
    55
dnl add the alsa library
slouken@3342
    56
ALSA_LIBS="$ALSA_LIBS -lasound -lm -ldl -lpthread"
slouken@3342
    57
LIBS=`echo $LIBS | sed 's/-lm//'`
slouken@3342
    58
LIBS=`echo $LIBS | sed 's/-ldl//'`
slouken@3342
    59
LIBS=`echo $LIBS | sed 's/-lpthread//'`
slouken@3342
    60
LIBS=`echo $LIBS | sed 's/  //'`
slouken@3342
    61
LIBS="$ALSA_LIBS $LIBS"
slouken@3342
    62
AC_MSG_RESULT($ALSA_LIBS)
slouken@3342
    63
slouken@3342
    64
dnl Check for a working version of libasound that is of the right version.
slouken@3342
    65
min_alsa_version=ifelse([$1], ,0.1.1,$1)
slouken@3342
    66
AC_MSG_CHECKING(for libasound headers version >= $min_alsa_version)
slouken@3342
    67
no_alsa=""
slouken@3342
    68
    alsa_min_major_version=`echo $min_alsa_version | \
slouken@3342
    69
           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
slouken@3342
    70
    alsa_min_minor_version=`echo $min_alsa_version | \
slouken@3342
    71
           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
slouken@3342
    72
    alsa_min_micro_version=`echo $min_alsa_version | \
slouken@3342
    73
           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
slouken@3342
    74
slouken@3342
    75
AC_LANG_SAVE
slouken@3342
    76
AC_LANG_C
slouken@3342
    77
AC_TRY_COMPILE([
slouken@3342
    78
#include <alsa/asoundlib.h>
slouken@3342
    79
], [
slouken@3342
    80
/* ensure backward compatibility */
slouken@3342
    81
#if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR)
slouken@3342
    82
#define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR
slouken@3342
    83
#endif
slouken@3342
    84
#if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR)
slouken@3342
    85
#define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR
slouken@3342
    86
#endif
slouken@3342
    87
#if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR)
slouken@3342
    88
#define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR
slouken@3342
    89
#endif
slouken@3342
    90
slouken@3342
    91
#  if(SND_LIB_MAJOR > $alsa_min_major_version)
slouken@3342
    92
  exit(0);
slouken@3342
    93
#  else
slouken@3342
    94
#    if(SND_LIB_MAJOR < $alsa_min_major_version)
slouken@3342
    95
#       error not present
slouken@3342
    96
#    endif
slouken@3342
    97
slouken@3342
    98
#   if(SND_LIB_MINOR > $alsa_min_minor_version)
slouken@3342
    99
  exit(0);
slouken@3342
   100
#   else
slouken@3342
   101
#     if(SND_LIB_MINOR < $alsa_min_minor_version)
slouken@3342
   102
#          error not present
slouken@3342
   103
#      endif
slouken@3342
   104
slouken@3342
   105
#      if(SND_LIB_SUBMINOR < $alsa_min_micro_version)
slouken@3342
   106
#        error not present
slouken@3342
   107
#      endif
slouken@3342
   108
#    endif
slouken@3342
   109
#  endif
slouken@3342
   110
exit(0);
slouken@3342
   111
],
slouken@3342
   112
  [AC_MSG_RESULT(found.)],
slouken@3342
   113
  [AC_MSG_RESULT(not present.)
slouken@3342
   114
   ifelse([$3], , [AC_MSG_ERROR(Sufficiently new version of libasound not found.)])
slouken@3342
   115
   alsa_found=no]
slouken@3342
   116
)
slouken@3342
   117
AC_LANG_RESTORE
slouken@3342
   118
slouken@3342
   119
dnl Now that we know that we have the right version, let's see if we have the library and not just the headers.
slouken@3342
   120
if test "x$enable_alsatest" = "xyes"; then
slouken@3342
   121
AC_CHECK_LIB([asound], [snd_ctl_open],,
slouken@3342
   122
	[ifelse([$3], , [AC_MSG_ERROR(No linkable libasound was found.)])
slouken@3342
   123
	 alsa_found=no]
slouken@3342
   124
)
slouken@3342
   125
fi
slouken@3342
   126
slouken@3342
   127
if test "x$alsa_found" = "xyes" ; then
slouken@3342
   128
   ifelse([$2], , :, [$2])
slouken@3342
   129
   LIBS=`echo $LIBS | sed 's/-lasound//g'`
slouken@3342
   130
   LIBS=`echo $LIBS | sed 's/  //'`
slouken@3342
   131
   LIBS="-lasound $LIBS"
slouken@3342
   132
fi
slouken@3342
   133
if test "x$alsa_found" = "xno" ; then
slouken@3342
   134
   ifelse([$3], , :, [$3])
slouken@3342
   135
   CFLAGS="$alsa_save_CFLAGS"
slouken@3342
   136
   LDFLAGS="$alsa_save_LDFLAGS"
slouken@3342
   137
   LIBS="$alsa_save_LIBS"
slouken@3342
   138
   ALSA_CFLAGS=""
slouken@3342
   139
   ALSA_LIBS=""
slouken@3342
   140
fi
slouken@3342
   141
slouken@3342
   142
dnl That should be it.  Now just export out symbols:
slouken@3342
   143
AC_SUBST(ALSA_CFLAGS)
slouken@3342
   144
AC_SUBST(ALSA_LIBS)
slouken@3342
   145
])