diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index a20f562..e34cd4b 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -10382,6 +10382,13 @@
 		cursor in the window.  This is counting screen cells from the
 		left side of the window.  The leftmost column is one.
 
+							*windowsversion()*
+windowsversion()
+		The result is a String.  For MS-Windows it indicates the OS
+		version.  E.g, Windows 10 is "10.0", Windows 8 is "6.2",
+		Windows XP is "5.1".  For non-MS-Windows systems the result is
+		an empty string.
+
 winheight({nr})						*winheight()*
 		The result is a Number, which is the height of window {nr}.
 		{nr} can be the window number or the |window-ID|.
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 892a753..610eca4 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -276,6 +276,7 @@
 static void f_virtcol(typval_T *argvars, typval_T *rettv);
 static void f_visualmode(typval_T *argvars, typval_T *rettv);
 static void f_wildmenumode(typval_T *argvars, typval_T *rettv);
+static void f_windowsversion(typval_T *argvars, typval_T *rettv);
 static void f_wordcount(typval_T *argvars, typval_T *rettv);
 static void f_xor(typval_T *argvars, typval_T *rettv);
 
@@ -864,6 +865,7 @@
     {"win_splitmove",   2, 3, FEARG_1,    f_win_splitmove},
     {"winbufnr",	1, 1, FEARG_1,	  f_winbufnr},
     {"wincol",		0, 0, 0,	  f_wincol},
+    {"windowsversion",	0, 0, 0,	  f_windowsversion},
     {"winheight",	1, 1, FEARG_1,	  f_winheight},
     {"winlayout",	0, 1, FEARG_1,	  f_winlayout},
     {"winline",		0, 0, 0,	  f_winline},
@@ -8408,6 +8410,16 @@
 }
 
 /*
+ * "windowsversion()" function
+ */
+    static void
+f_windowsversion(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
+{
+    rettv->v_type = VAR_STRING;
+    rettv->vval.v_string = vim_strsave((char_u *)windowsVersion);
+}
+
+/*
  * "wordcount()" function
  */
     static void
diff --git a/src/globals.h b/src/globals.h
index 33082d5..87f7b0b 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1724,6 +1724,9 @@
 
 // Used for checking if local variables or arguments used in a lambda.
 EXTERN int *eval_lavars_used INIT(= NULL);
+
+// Only filled for Win32.
+EXTERN char windowsVersion[20] INIT(= {0});
 #endif
 
 #ifdef MSWIN
diff --git a/src/os_win32.c b/src/os_win32.c
index c5670af..844d794 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -758,8 +758,6 @@
 # define VER_PLATFORM_WIN32_WINDOWS 1
 #endif
 
-DWORD g_PlatformId;
-
 #ifdef HAVE_ACL
 # ifndef PROTO
 #  include <aclapi.h>
@@ -806,8 +804,7 @@
 #endif
 
 /*
- * Set g_PlatformId to VER_PLATFORM_WIN32_NT (NT) or
- * VER_PLATFORM_WIN32_WINDOWS (Win95).
+ * Set "win8_or_later" and fill in "windowsVersion".
  */
     void
 PlatformId(void)
@@ -821,7 +818,8 @@
 	ovi.dwOSVersionInfoSize = sizeof(ovi);
 	GetVersionEx(&ovi);
 
-	g_PlatformId = ovi.dwPlatformId;
+	vim_snprintf(windowsVersion, sizeof(windowsVersion), "%d.%d",
+		(int)ovi.dwMajorVersion, (int)ovi.dwMinorVersion);
 
 	if ((ovi.dwMajorVersion == 6 && ovi.dwMinorVersion >= 2)
 		|| ovi.dwMajorVersion > 6)
diff --git a/src/testdir/gen_opt_test.vim b/src/testdir/gen_opt_test.vim
index f70623b..91415e4 100644
--- a/src/testdir/gen_opt_test.vim
+++ b/src/testdir/gen_opt_test.vim
@@ -10,6 +10,8 @@
 " The terminal size is restored at the end.
 " Clear out t_WS, we don't want to resize the actual terminal.
 let script = [
+      \ '" DO NOT EDIT: Generated with gen_opt_test.vim',
+      \ '',
       \ 'let save_columns = &columns',
       \ 'let save_lines = &lines',
       \ 'let save_term = &term',
@@ -123,7 +125,7 @@
       \ 'printmbfont': [['', 'r:some', 'b:Bold,c:yes'], ['xxx']],
       \ 'printoptions': [['', 'header:0', 'left:10pc,top:5pc'], ['xxx']],
       \ 'scrollopt': [['', 'ver', 'ver,hor'], ['xxx']],
-      \ 'renderoptions': [['', 'type:directx'], ['xxx']],
+      \ 'renderoptions': [[''], ['xxx']],
       \ 'selection': [['old', 'inclusive'], ['', 'xxx']],
       \ 'selectmode': [['', 'mouse', 'key,cmd'], ['xxx']],
       \ 'sessionoptions': [['', 'blank', 'help,options,slash'], ['xxx']],
diff --git a/src/testdir/test_options.vim b/src/testdir/test_options.vim
index 65600ee..048356a 100644
--- a/src/testdir/test_options.vim
+++ b/src/testdir/test_options.vim
@@ -389,6 +389,15 @@
   endif
 endfunc
 
+func Test_renderoptions()
+  " Only do this for Windows Vista and later, fails on Windows XP and earlier.
+  " Doesn't hurt to do this on a non-Windows system.
+  if windowsversion() !~ '^[345]\.'
+    set renderoptions=type:directx
+    set rop=type:directx
+  endif
+endfunc
+
 func ResetIndentexpr()
   set indentexpr=
 endfunc
diff --git a/src/version.c b/src/version.c
index 0185a78..420c722 100644
--- a/src/version.c
+++ b/src/version.c
@@ -743,6 +743,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    47,
+/**/
     46,
 /**/
     45,
