Windows Platform issues

All, (or windows platform developers)

I’m working with Double fine in incorporating SDL2 as their primary platform abstraction for platforms that support it. It is currently being used for the OS X and Linux ports of “The Cave” that I finished last month. I’m going to outline a few of the hurdles they ran into and are running into and would l like feedback on them and how BEST to solve them.

Statically linked library

They would prefer a statically linked library on windows. Is there any reason there isn’t this option in the VC projs?
Part of them switching to a static lib, caused the intrinsic code on SDL_stdlib.c to fail. (comments from their commit)

I also had to remove some C runtime intrinsics that SDL defined, because some of them don’t use the cdecl calling convention, and others cause linker errors. These problems only came up once I started statically linking with SDL, so it might merit more investigation to find out why they were problematic.

Xinput issues…

They had to implement a workaround to disable Xinput (I corrected it, so it uses a HINT instead of a platform specific function… you’ll see that in HG tip). Here are their commit comments

Workaround for XInput problems by adding a command line option to disable it in SDL. Some players were reporting that Xbox 360 pads didn’t function with XInput, but functioned fine in applications that read their data using DirectInput.

The Next was an odd detection issues of gamepad devices… As a webcam (with 256 buttons) somehow got detected as a controller.

Fix buffer overrun/mem stomp in SDL gamepad code if using any gamepad that reports > 32 buttons. For some reason, we found a webcam that reports 256 buttons :stuck_out_tongue:

This webcam probably also exposes an issue in gamepad detection in SDL, too.

Last (and most important)…

They are attempting to use SDL to create the window but instead of using OpenGL as the renderer, they wish to use Direct3D… IS that actually supported?? If so, how? If not, what functionality needs to be added to support this?

Edward Rudd
OutOfOrder.cc
Skype: outoforder_cc
317-674-3296

Any reason to want to link SDL statically? I can see the logic if the
program is a single file, but I doubt The Cave is the case. Then
again, there isn’t any reason why it shouldn’t work, so this should be
checked. Sadly, I only used MinGW, not Visual Studio, so I don’t think
I can help much here.

What webcam reported itself as a controller? o_O;

And if I recall correctly, Direct3D is the default for SDL on
Windows. You can override what renderer gets used with
SDL_SetHintWithPriority (and setting the hint to override). This is
for SDL renderers though, for which you wouldn’t be using
system-specific APIs at all in the first place.

SDL has code to initialize OpenGL without a renderer, I don’t think it
has for DIrect3D, but you could still initialize Direct3D directly
right after creating the window if you really want that. You can use
SDL_GetWindowWMInfo to get the hwnd of the SDL window.

2013/3/6, Edward Rudd :> All, (or windows platform developers)

I’m working with Double fine in incorporating SDL2 as their primary platform
abstraction for platforms that support it. It is currently being used for
the OS X and Linux ports of “The Cave” that I finished last month. I’m
going to outline a few of the hurdles they ran into and are running into and
would l like feedback on them and how BEST to solve them.

Statically linked library

They would prefer a statically linked library on windows. Is there any
reason there isn’t this option in the VC projs?
Part of them switching to a static lib, caused the intrinsic code on
SDL_stdlib.c to fail. (comments from their commit)

I also had to remove some C runtime intrinsics that SDL defined, because
some of them don’t use the cdecl calling convention, and others cause
linker errors. These problems only came up once I started statically
linking with SDL, so it might merit more investigation to find out why
they were problematic.

Xinput issues…

They had to implement a workaround to disable Xinput (I corrected it, so it
uses a HINT instead of a platform specific function… you’ll see that in HG
tip). Here are their commit comments

Workaround for XInput problems by adding a command line option to disable
it in SDL. Some players were reporting that Xbox 360 pads didn’t function
with XInput, but functioned fine in applications that read their data
using DirectInput.

The Next was an odd detection issues of gamepad devices… As a webcam (with
256 buttons) somehow got detected as a controller.

Fix buffer overrun/mem stomp in SDL gamepad code if using any gamepad that
reports > 32 buttons. For some reason, we found a webcam that reports 256
buttons :stuck_out_tongue:

This webcam probably also exposes an issue in gamepad detection in SDL,
too.

Last (and most important)…

They are attempting to use SDL to create the window but instead of using
OpenGL as the renderer, they wish to use Direct3D… IS that actually
supported?? If so, how? If not, what functionality needs to be added to
support this?

Edward Rudd
OutOfOrder.cc
Skype: outoforder_cc
317-674-3296


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

Sounds like some of your issues is related to how you are compiling SDL2,
rather than a problem with SDL itself.
Using a static library shouldn’t present an immediate issue, afaik. What
build options are you using to compile SDL2?On Wed, Mar 6, 2013 at 10:47 AM, Edward Rudd wrote:

All, (or windows platform developers)

I’m working with Double fine in incorporating SDL2 as their primary
platform abstraction for platforms that support it. It is currently being
used for the OS X and Linux ports of “The Cave” that I finished last month.
I’m going to outline a few of the hurdles they ran into and are running
into and would l like feedback on them and how BEST to solve them.

Statically linked library

They would prefer a statically linked library on windows. Is there any
reason there isn’t this option in the VC projs?
Part of them switching to a static lib, caused the intrinsic code on
SDL_stdlib.c to fail. (comments from their commit)

I also had to remove some C runtime intrinsics that SDL defined, because
some of them don’t use the cdecl calling convention, and others cause
linker errors. These problems only came up once I started statically
linking with SDL, so it might merit more investigation to find out why they
were problematic.

Xinput issues…

They had to implement a workaround to disable Xinput (I corrected it, so
it uses a HINT instead of a platform specific function… you’ll see that in
HG tip). Here are their commit comments

Workaround for XInput problems by adding a command line option to
disable it in SDL. Some players were reporting that Xbox 360 pads didn’t
function with XInput, but functioned fine in applications that read their
data using DirectInput.

The Next was an odd detection issues of gamepad devices… As a webcam
(with 256 buttons) somehow got detected as a controller.

Fix buffer overrun/mem stomp in SDL gamepad code if using any gamepad
that reports > 32 buttons. For some reason, we found a webcam that reports
256 buttons :stuck_out_tongue:

This webcam probably also exposes an issue in gamepad detection in SDL,
too.

Last (and most important)…

They are attempting to use SDL to create the window but instead of using
OpenGL as the renderer, they wish to use Direct3D… IS that actually
supported?? If so, how? If not, what functionality needs to be added to
support this?

Edward Rudd
OutOfOrder.cc
Skype: outoforder_cc
317-674-3296


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

SDL used Direct3D on windows by default.
I also ran into some problems when I tried to compile SDL as a static
library. I ended up deciding to use SDL as a dll.
It would be nice if you could submit bugs to bugzilla, so your problems
get documented and eventually get looked at.

PallavOn 3/7/2013 1:15 AM, Alex Barry wrote:

Sounds like some of your issues is related to how you are compiling
SDL2, rather than a problem with SDL itself.
Using a static library shouldn’t present an immediate issue, afaik.
What build options are you using to compile SDL2?

On Wed, Mar 6, 2013 at 10:47 AM, Edward Rudd <urkle at outoforder.cc <mailto:urkle at outoforder.cc>> wrote:

All, (or windows platform developers)

I'm working with Double fine in incorporating SDL2 as their
primary platform abstraction for platforms that support it.  It is
currently being used for the OS X and Linux ports of "The Cave"
that I finished last month.  I'm going to outline a few of the
hurdles they ran into and are running into and would l like
feedback on them and how BEST to solve them.

Statically linked library

They would prefer a statically linked library on windows.  Is
there any reason there isn't this option in the VC projs?
Part of them switching to a static lib, caused the intrinsic code
on SDL_stdlib.c to fail.  (comments from their commit)

> I also had to remove some C runtime intrinsics that SDL defined,
because some of them don't use the cdecl calling convention, and
others cause linker errors. These problems only came up once I
started statically linking with SDL, so it might merit more
investigation to find out why they were problematic.


Xinput issues..

They had to implement a workaround to disable Xinput (I corrected
it, so it uses a HINT instead of a platform specific function..
you'll see that in HG tip).  Here are their commit comments

> Workaround for XInput problems by adding a command line option
to disable it in SDL. Some players were reporting that Xbox 360
pads didn't function with XInput, but functioned fine in
applications that read their data using DirectInput.


The Next was an odd detection issues of gamepad devices..  As a
webcam (with 256 buttons) somehow got detected as a controller.

> Fix buffer overrun/mem stomp in SDL gamepad code if using any
gamepad that reports > 32 buttons. For some reason, we found a
webcam that reports 256 buttons :P
>
> This webcam probably also exposes an issue in gamepad detection
in SDL, too.

Last (and most important)..

They are attempting to use SDL to create the window but instead of
using OpenGL as the renderer, they wish to use Direct3D.. IS that
actually supported??  If so, how? If not, what functionality needs
to be added to support this?


Edward Rudd
OutOfOrder.cc
Skype: outoforder_cc
317-674-3296 <tel:317-674-3296>






_______________________________________________
SDL mailing list
SDL at lists.libsdl.org <mailto:SDL at lists.libsdl.org>
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org


Pallav Nawani
Game Designer/CEO
http://www.ironcode.com
Twitter: http://twitter.com/Ironcode_Gaming
Facebook: http://www.facebook.com/Ironcode.Gaming