Commit 829b6375 authored by Andreas Beckmann's avatar Andreas Beckmann

New upstream version 390.116

parents df7f7ca2 a8fba708
NVIDIA_VERSION = 390.87
NVIDIA_VERSION = 390.116
NVIDIA_VERSION = 390.87
NVIDIA_VERSION = 390.116
......@@ -1319,7 +1319,8 @@ static int get_xserver_information(const char *versionString,
int *isXorg,
int *autoloadsGLX,
int *supportsExtensionSection,
int *xineramaPlusCompositeWorks)
int *xineramaPlusCompositeWorks,
const char **compositeExtensionName)
{
#define XSERVER_VERSION_FORMAT_1 "X Window System Version"
#define XSERVER_VERSION_FORMAT_2 "X.Org X Server"
......@@ -1397,6 +1398,18 @@ static int get_xserver_information(const char *versionString,
} else {
*xineramaPlusCompositeWorks = TRUE;
}
/*
* With X.Org xserver version 1.20, the name of the composite
* extension was changed from "Composite" to "COMPOSITE". As of
* that release extension names are case-sensitive so we must
* ensure the correct case is used.
*/
if (major == 1 && minor >= 20) {
*compositeExtensionName = "COMPOSITE";
} else {
*compositeExtensionName = "Composite";
}
return TRUE;
......@@ -1434,6 +1447,7 @@ void xconfigGetXServerInUse(GenerateOptions *gop)
gop->supports_extension_section = FALSE;
gop->autoloads_glx = FALSE;
gop->xinerama_plus_composite_works = FALSE;
gop->compositeExtensionName = NULL;
/* run `X -version` with a PATH that hopefully includes the X binary */
......@@ -1463,7 +1477,8 @@ void xconfigGetXServerInUse(GenerateOptions *gop)
&isXorg,
&gop->autoloads_glx,
&gop->supports_extension_section,
&gop->xinerama_plus_composite_works);
&gop->xinerama_plus_composite_works,
&gop->compositeExtensionName);
if (found) {
if (isXorg) {
......
......@@ -625,6 +625,7 @@ typedef struct {
int supports_extension_section;
int autoloads_glx;
int xinerama_plus_composite_works;
const char *compositeExtensionName;
} GenerateOptions;
......
......@@ -3340,6 +3340,8 @@ nvPrimeDisplayPtr add_prime_display_from_server(nvScreenPtr screen,
prime->screen_num = atoi(value);
} else if (!strcmp(tok, "name")) {
prime->label = g_strdup(value);
} else if (!strcmp(tok, "sync")) {
prime->sync = (0 == strcmp(value, "1"));
}
}
tok = strtok(NULL, ",");
......
......@@ -323,6 +323,19 @@ static const char * __screen_metamode_delete_button_help =
"MetaMode for the screen; This option can be applied to your currently "
"running X server.";
/* Prime Display tooltips */
static const char *__prime_viewport_help =
"This shows the width, height, and offset in pixels of the region that "
"should be displayed from the desktop.";
static const char *__prime_name_help =
"This is the name of the display.";
static const char *__prime_sync_help =
"This shows the status of synchronization for the PRIME display. Without "
"synchronization, applications will not be able to sync to the display's "
"vblank.";
/* General button tooltips */
......@@ -2234,6 +2247,8 @@ GtkWidget* ctk_display_config_new(CtrlTarget *ctrl_target,
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);
ctk_object->lbl_prime_display_view = gtk_label_new("");
ctk_config_set_tooltip(ctk_config, ctk_object->lbl_prime_display_view,
__prime_viewport_help);
gtk_box_pack_start(GTK_BOX(hbox),
ctk_object->lbl_prime_display_view,
FALSE, FALSE, 5);
......@@ -2245,11 +2260,26 @@ GtkWidget* ctk_display_config_new(CtrlTarget *ctrl_target,
labels = g_slist_append(labels, label);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);
ctk_object->lbl_prime_display_name = gtk_label_new("");
ctk_config_set_tooltip(ctk_config, ctk_object->lbl_prime_display_name,
__prime_name_help);
gtk_box_pack_start(GTK_BOX(hbox),
ctk_object->lbl_prime_display_name,
FALSE, FALSE, 5);
ctk_object->box_prime_display_name = hbox;
hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
label = gtk_label_new("Synchronization:");
labels = g_slist_append(labels, label);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);
ctk_object->lbl_prime_display_sync = gtk_label_new("");
ctk_config_set_tooltip(ctk_config, ctk_object->lbl_prime_display_sync,
__prime_sync_help);
gtk_box_pack_start(GTK_BOX(hbox),
ctk_object->lbl_prime_display_sync,
FALSE, FALSE, 5);
g_object_ref(ctk_object->prime_display_page);
gtk_widget_show_all(ctk_object->prime_display_page);
}
......@@ -2504,6 +2534,21 @@ GtkTextBuffer *ctk_display_config_create_help(GtkTextTagTable *table,
"is enabled.", __screen_metamode_delete_button_help);
ctk_help_para(b, &i, "");
ctk_help_heading(b, &i, "PRIME Display Options");
ctk_help_para(b, &i, "The following attributes are available when a "
"configured PRIME display is selected in the Selection "
"drop-down. These attributes cannot be changed within "
"nvidia-settings.");
ctk_help_heading(b, &i, "Viewport");
ctk_help_para(b, &i, "%s", __prime_viewport_help);
ctk_help_heading(b, &i, "Name");
ctk_help_para(b, &i, "%s This attribute may not be available.",
__prime_name_help);
ctk_help_heading(b, &i, "Synchronization");
ctk_help_para(b, &i, "%s", __prime_sync_help);
ctk_help_para(b, &i, "");
ctk_help_heading(b, &i, "Buttons");
ctk_help_heading(b, &i, "Apply");
......@@ -4515,6 +4560,9 @@ static void setup_prime_display_page(CtkDisplayConfig *ctk_object)
gtk_widget_hide(ctk_object->box_prime_display_name);
}
gtk_label_set_text(GTK_LABEL(ctk_object->lbl_prime_display_sync),
prime->sync ? "On" : "Off");
gtk_widget_set_sensitive(ctk_object->prime_display_page, True);
}
......@@ -9186,9 +9234,12 @@ static int generateXConfig(CtkDisplayConfig *ctk_object, XConfigPtr *pConfig)
if (!config->extensions) {
config->extensions = nvalloc(sizeof(XConfigExtensionsRec));
}
xconfigRemoveNamedOption(&(config->extensions->options), "Composite",
xconfigRemoveNamedOption(&(config->extensions->options),
go.compositeExtensionName,
NULL);
xconfigAddNewOption(&config->extensions->options, "Composite", "Disable");
xconfigAddNewOption(&config->extensions->options,
go.compositeExtensionName,
"Disable");
nvfree(composite_disabled_str);
}
}
......
......@@ -199,6 +199,7 @@ typedef struct _CtkDisplayConfig
GtkWidget *lbl_prime_display_view;
GtkWidget *lbl_prime_display_name;
GtkWidget *lbl_prime_display_sync;
GtkWidget *box_prime_display_name;
......
......@@ -303,6 +303,7 @@ typedef struct nvPrimeDisplayRec {
GdkRectangle rect;
char *label;
int screen_num;
Bool sync;
} nvPrimeDisplay, *nvPrimeDisplayPtr;
......
NVIDIA_VERSION = 390.87
NVIDIA_VERSION = 390.116
......@@ -103,7 +103,7 @@ const AttributeTableEntry attributeTable[] = {
{ "ScreenPosition", NV_CTRL_STRING_SCREEN_RECTANGLE, STR_ATTR, {0,0,0,0,1,0}, {}, "Returns the physical X Screen's initial position and size (in absolute coordinates) within the desktop as the \"token=value \" string: \"x=#, y=#, width=#, height=#\"." },
{ "AddMetaMode", NV_CTRL_STRING_OPERATION_ADD_METAMODE, SOP_ATTR, {0,0,0,0,1,1}, {}, "Adds the given MetaMode to the X screen." },
{ "ParseMetaMode", NV_CTRL_STRING_OPERATION_ADD_METAMODE, SOP_ATTR, {0,0,0,0,1,1}, {}, "Parses and validates a given MetaMode." },
{ "PrimeOutputsData", NV_CTRL_STRING_PRIME_OUTPUTS_DATA , STR_ATTR, {0,0,0,0,1,1}, {}, "Lists configured PRIME displays' configuration information." },
{ "PrimeOutputsData", NV_CTRL_STRING_PRIME_OUTPUTS_DATA , STR_ATTR, {0,0,0,0,1,0}, {}, "Lists configured PRIME displays' configuration information." },
/* OpenGL */
{ "SyncToVBlank", NV_CTRL_SYNC_TO_VBLANK, INT_ATTR, {0,0,0,0,0,0}, { .int_flags = {0,0,0,0,0,0,0} }, "Enables sync to vertical blanking for OpenGL clients. This setting only takes effect on OpenGL clients started after it is set." },
......
#define NVIDIA_VERSION "390.87"
#define NVIDIA_VERSION "390.116"
NVIDIA_VERSION = 390.87
NVIDIA_VERSION = 390.116
NVIDIA_VERSION = 390.87
NVIDIA_VERSION = 390.116
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment