acinclude/ltsugar.m4
author Sam Lantinga
Sun, 05 Apr 2020 08:58:47 -0700
changeset 13689 c3055b205671
parent 6442 2d3caa191dc4
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.
     1 # ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
     2 #
     3 # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
     4 # Written by Gary V. Vaughan, 2004
     5 #
     6 # This file is free software; the Free Software Foundation gives
     7 # unlimited permission to copy and/or distribute it, with or without
     8 # modifications, as long as this notice is preserved.
     9 
    10 # serial 6 ltsugar.m4
    11 
    12 # This is to help aclocal find these macros, as it can't see m4_define.
    13 AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
    14 
    15 
    16 # lt_join(SEP, ARG1, [ARG2...])
    17 # -----------------------------
    18 # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
    19 # associated separator.
    20 # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
    21 # versions in m4sugar had bugs.
    22 m4_define([lt_join],
    23 [m4_if([$#], [1], [],
    24        [$#], [2], [[$2]],
    25        [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
    26 m4_define([_lt_join],
    27 [m4_if([$#$2], [2], [],
    28        [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
    29 
    30 
    31 # lt_car(LIST)
    32 # lt_cdr(LIST)
    33 # ------------
    34 # Manipulate m4 lists.
    35 # These macros are necessary as long as will still need to support
    36 # Autoconf-2.59 which quotes differently.
    37 m4_define([lt_car], [[$1]])
    38 m4_define([lt_cdr],
    39 [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
    40        [$#], 1, [],
    41        [m4_dquote(m4_shift($@))])])
    42 m4_define([lt_unquote], $1)
    43 
    44 
    45 # lt_append(MACRO-NAME, STRING, [SEPARATOR])
    46 # ------------------------------------------
    47 # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
    48 # Note that neither SEPARATOR nor STRING are expanded; they are appended
    49 # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
    50 # No SEPARATOR is output if MACRO-NAME was previously undefined (different
    51 # than defined and empty).
    52 #
    53 # This macro is needed until we can rely on Autoconf 2.62, since earlier
    54 # versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
    55 m4_define([lt_append],
    56 [m4_define([$1],
    57 	   m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
    58 
    59 
    60 
    61 # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
    62 # ----------------------------------------------------------
    63 # Produce a SEP delimited list of all paired combinations of elements of
    64 # PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
    65 # has the form PREFIXmINFIXSUFFIXn.
    66 # Needed until we can rely on m4_combine added in Autoconf 2.62.
    67 m4_define([lt_combine],
    68 [m4_if(m4_eval([$# > 3]), [1],
    69        [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
    70 [[m4_foreach([_Lt_prefix], [$2],
    71 	     [m4_foreach([_Lt_suffix],
    72 		]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
    73 	[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
    74 
    75 
    76 # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
    77 # -----------------------------------------------------------------------
    78 # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
    79 # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
    80 m4_define([lt_if_append_uniq],
    81 [m4_ifdef([$1],
    82 	  [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
    83 		 [lt_append([$1], [$2], [$3])$4],
    84 		 [$5])],
    85 	  [lt_append([$1], [$2], [$3])$4])])
    86 
    87 
    88 # lt_dict_add(DICT, KEY, VALUE)
    89 # -----------------------------
    90 m4_define([lt_dict_add],
    91 [m4_define([$1($2)], [$3])])
    92 
    93 
    94 # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
    95 # --------------------------------------------
    96 m4_define([lt_dict_add_subkey],
    97 [m4_define([$1($2:$3)], [$4])])
    98 
    99 
   100 # lt_dict_fetch(DICT, KEY, [SUBKEY])
   101 # ----------------------------------
   102 m4_define([lt_dict_fetch],
   103 [m4_ifval([$3],
   104 	m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
   105     m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
   106 
   107 
   108 # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
   109 # -----------------------------------------------------------------
   110 m4_define([lt_if_dict_fetch],
   111 [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
   112 	[$5],
   113     [$6])])
   114 
   115 
   116 # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
   117 # --------------------------------------------------------------
   118 m4_define([lt_dict_filter],
   119 [m4_if([$5], [], [],
   120   [lt_join(m4_quote(m4_default([$4], [[, ]])),
   121            lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
   122 		      [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
   123 ])