Index: src/win/d3d_disp.cpp
===================================================================
--- src/win/d3d_disp.cpp	(revision 14417)
+++ src/win/d3d_disp.cpp	(working copy)
@@ -309,6 +309,19 @@
    return false;
 }
 
+static int d3d_get_max_texture_size(int adapter)
+{
+   D3DCAPS9 caps;
+
+   if (_al_d3d->GetDeviceCaps(adapter, D3DDEVTYPE_HAL, &caps) != D3D_OK) {
+      if (_al_d3d->GetDeviceCaps(adapter, D3DDEVTYPE_REF, &caps) != D3D_OK) {
+         return -1;
+      }
+   }
+
+   return _ALLEGRO_MIN(caps.MaxTextureWidth, caps.MaxTextureHeight);
+}
+
 /* Function: al_have_d3d_non_square_texture_support
  */
 bool al_have_d3d_non_square_texture_support(void)
@@ -1984,6 +1997,12 @@
 
    al_identity_transform(&display->view_transform);
 
+   int *s = display->extra_settings.settings;
+   s[ALLEGRO_MAX_BITMAP_SIZE] = d3d_get_max_texture_size(((ALLEGRO_DISPLAY_WIN *)display)->adapter);
+   s[ALLEGRO_SUPPORT_SEPARATE_ALPHA] = _al_d3d_supports_separate_alpha_blend(display);
+   s[ALLEGRO_SUPPORT_NPOT_BITMAP] = al_have_d3d_non_pow2_texture_support();
+   s[ALLEGRO_CAN_DRAW_INTO_BITMAP] = render_to_texture_supported;
+
    return display;
 }
 
