summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Plattner <aplattner@nvidia.com>2019-08-13 11:07:10 -0700
committerAaron Plattner <aplattner@nvidia.com>2019-08-13 11:07:10 -0700
commitdb68628db1afeba5a333884e0d59ca059012df1c (patch)
tree32370a56a42af0794538fcfbaedcf3cf540656fe
parent1e45b6b5fa38abbdda654d7cd7202137947eb0af (diff)
435.17
-rw-r--r--doc/version.mk2
-rw-r--r--samples/version.mk2
-rw-r--r--src/gtk+-2.x/ctkevent.c6
-rw-r--r--src/gtk+-2.x/ctkopengl.c120
-rw-r--r--src/gtk+-2.x/ctkopengl.h2
-rw-r--r--src/gtk+-2.x/ctkthermal.c33
-rw-r--r--src/gtk+-2.x/ctkui.c11
-rw-r--r--src/libXNVCtrl/NVCtrl.h31
-rw-r--r--src/libXNVCtrl/version.mk2
-rw-r--r--src/libXNVCtrlAttributes/NvCtrlAttributes.h1
-rw-r--r--src/libXNVCtrlAttributes/NvCtrlAttributesUtils.c6
-rw-r--r--src/parse.c5
-rw-r--r--src/version.h2
-rw-r--r--src/version.mk2
-rw-r--r--version.mk2
15 files changed, 141 insertions, 86 deletions
diff --git a/doc/version.mk b/doc/version.mk
index 3431911..160bbfd 100644
--- a/doc/version.mk
+++ b/doc/version.mk
@@ -1 +1 @@
-NVIDIA_VERSION = 430.40
+NVIDIA_VERSION = 435.17
diff --git a/samples/version.mk b/samples/version.mk
index 3431911..160bbfd 100644
--- a/samples/version.mk
+++ b/samples/version.mk
@@ -1 +1 @@
-NVIDIA_VERSION = 430.40
+NVIDIA_VERSION = 435.17
diff --git a/src/gtk+-2.x/ctkevent.c b/src/gtk+-2.x/ctkevent.c
index f715185..1be7413 100644
--- a/src/gtk+-2.x/ctkevent.c
+++ b/src/gtk+-2.x/ctkevent.c
@@ -166,7 +166,9 @@ static void ctk_event_class_init(CtkEventClass *ctk_event_class)
MAKE_SIGNAL(NV_CTRL_TV_SATURATION);
MAKE_SIGNAL(NV_CTRL_TV_RESET_SETTINGS);
MAKE_SIGNAL(NV_CTRL_GPU_CORE_TEMPERATURE);
- MAKE_SIGNAL(NV_CTRL_GPU_CORE_THRESHOLD);
+ MAKE_SIGNAL(NV_CTRL_GPU_SLOWDOWN_THRESHOLD);
+ MAKE_SIGNAL(NV_CTRL_GPU_SHUTDOWN_THRESHOLD);
+ MAKE_SIGNAL(NV_CTRL_GPU_MAX_OPERATING_THRESHOLD);
MAKE_SIGNAL(NV_CTRL_GPU_DEFAULT_CORE_THRESHOLD);
MAKE_SIGNAL(NV_CTRL_GPU_MAX_CORE_THRESHOLD);
MAKE_SIGNAL(NV_CTRL_AMBIENT_TEMPERATURE);
@@ -360,7 +362,7 @@ static void ctk_event_class_init(CtkEventClass *ctk_event_class)
* knows about.
*/
-#if NV_CTRL_LAST_ATTRIBUTE != NV_CTRL_DISPLAY_VRR_ENABLED
+#if NV_CTRL_LAST_ATTRIBUTE != NV_CTRL_GPU_MAX_OPERATING_THRESHOLD
#warning "There are attributes that do not emit signals!"
#endif
diff --git a/src/gtk+-2.x/ctkopengl.c b/src/gtk+-2.x/ctkopengl.c
index 07d91c6..39271ae 100644
--- a/src/gtk+-2.x/ctkopengl.c
+++ b/src/gtk+-2.x/ctkopengl.c
@@ -85,9 +85,6 @@ static void value_changed (GObject *, CtrlEvent *, gpointer);
static const gchar *get_image_settings_string(gint val);
-static gchar *format_image_settings_value(GtkScale *scale, gdouble arg1,
- gpointer user_data);
-
static void post_slider_value_changed(CtkOpenGL *ctk_opengl, gint val);
static void aa_line_gamma_update_received(GObject *object, CtrlEvent *event,
@@ -95,7 +92,8 @@ static void aa_line_gamma_update_received(GObject *object, CtrlEvent *event,
static void post_image_settings_value_changed(CtkOpenGL *ctk_opengl, gint val);
-static void image_settings_value_changed(GtkRange *range, gpointer user_data);
+static void image_settings_value_changed(CtkDropDownMenu *widget,
+ gpointer user_data);
static void image_settings_update_received(GObject *object, CtrlEvent *event,
gpointer user_data);
@@ -159,8 +157,8 @@ static const char *__aa_line_gamma_slider_help =
"smooth lines. This option is applied to OpenGL applications "
"that are started after this option is set.";
-static const char *__image_settings_slider_help =
-"The Image Settings slider controls the image quality setting.";
+static const char *__image_settings_dropdown_help =
+"This option adjusts the image quality setting.";
static const char *__force_stereo_help =
"Enabling this option causes OpenGL to force "
@@ -293,8 +291,7 @@ GtkWidget* ctk_opengl_new(CtrlTarget *ctrl_target,
GtkWidget *hbox;
GtkWidget *vbox;
GtkWidget *check_button;
- GtkWidget *scale;
- GtkAdjustment *adjustment;
+ GtkWidget *dropdown;
GtkWidget *menu;
gint sync_to_vblank = 0;
@@ -696,34 +693,57 @@ GtkWidget* ctk_opengl_new(CtrlTarget *ctrl_target,
* Image Quality settings.
*/
- if (ret_image_settings == NvCtrlSuccess) {
-
- frame = gtk_frame_new("Image Settings");
- gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 3);
+ if (ret_image_settings == NvCtrlSuccess &&
+ image_settings_valid.range.min == 0) {
hbox = gtk_hbox_new(FALSE, 0);
- gtk_container_set_border_width(GTK_CONTAINER(hbox), FRAME_PADDING);
- gtk_container_add(GTK_CONTAINER(frame), hbox);
+ frame = gtk_label_new("Image Settings: ");
+ gtk_box_pack_start(GTK_BOX(hbox), frame, FALSE, FALSE, 3);
- /* create the slider */
- adjustment = GTK_ADJUSTMENT(
- gtk_adjustment_new(image_settings_value,
- image_settings_valid.range.min,
- image_settings_valid.range.max,
- 1, 1, 0.0));
- scale = gtk_hscale_new(GTK_ADJUSTMENT(adjustment));
- gtk_adjustment_set_value(GTK_ADJUSTMENT(adjustment), image_settings_value);
+ gtk_container_add(GTK_CONTAINER(vbox), hbox);
- gtk_scale_set_draw_value(GTK_SCALE(scale), TRUE);
- gtk_scale_set_value_pos(GTK_SCALE(scale), GTK_POS_TOP);
+ /* create the dropdown */
- gtk_container_add(GTK_CONTAINER(hbox), scale);
+ dropdown = ctk_drop_down_menu_new(CTK_DROP_DOWN_MENU_FLAG_READONLY);
- g_signal_connect(G_OBJECT(scale), "format-value",
- G_CALLBACK(format_image_settings_value),
- (gpointer) ctk_opengl);
+ if (image_settings_valid.range.max >=
+ NV_CTRL_IMAGE_SETTINGS_HIGH_QUALITY) {
+ ctk_drop_down_menu_append_item(CTK_DROP_DOWN_MENU(dropdown),
+ get_image_settings_string(
+ NV_CTRL_IMAGE_SETTINGS_HIGH_QUALITY),
+ NV_CTRL_IMAGE_SETTINGS_HIGH_QUALITY);
+ }
+
+ if (image_settings_valid.range.max >=
+ NV_CTRL_IMAGE_SETTINGS_QUALITY) {
+ ctk_drop_down_menu_append_item(CTK_DROP_DOWN_MENU(dropdown),
+ get_image_settings_string(
+ NV_CTRL_IMAGE_SETTINGS_QUALITY),
+ NV_CTRL_IMAGE_SETTINGS_QUALITY);
+ }
- g_signal_connect(G_OBJECT(scale), "value-changed",
+ if (image_settings_valid.range.max >=
+ NV_CTRL_IMAGE_SETTINGS_PERFORMANCE) {
+ ctk_drop_down_menu_append_item(CTK_DROP_DOWN_MENU(dropdown),
+ get_image_settings_string(
+ NV_CTRL_IMAGE_SETTINGS_PERFORMANCE),
+ NV_CTRL_IMAGE_SETTINGS_PERFORMANCE);
+ }
+
+ if (image_settings_valid.range.max >=
+ NV_CTRL_IMAGE_SETTINGS_HIGH_PERFORMANCE) {
+ ctk_drop_down_menu_append_item(CTK_DROP_DOWN_MENU(dropdown),
+ get_image_settings_string(
+ NV_CTRL_IMAGE_SETTINGS_HIGH_PERFORMANCE),
+ NV_CTRL_IMAGE_SETTINGS_HIGH_PERFORMANCE);
+ }
+
+ ctk_drop_down_menu_set_current_value(CTK_DROP_DOWN_MENU(dropdown),
+ image_settings_value);
+
+ gtk_container_add(GTK_CONTAINER(hbox), dropdown);
+
+ g_signal_connect(G_OBJECT(dropdown), "changed",
G_CALLBACK(image_settings_value_changed),
(gpointer) ctk_opengl);
@@ -732,10 +752,11 @@ GtkWidget* ctk_opengl_new(CtrlTarget *ctrl_target,
G_CALLBACK(image_settings_update_received),
(gpointer) ctk_opengl);
- ctk_config_set_tooltip(ctk_config, scale, __image_settings_slider_help);
+ ctk_config_set_tooltip(ctk_config, dropdown,
+ __image_settings_dropdown_help);
ctk_opengl->active_attributes |= __IMAGE_SETTINGS;
- ctk_opengl->image_settings_scale = scale;
+ ctk_opengl->image_settings_dropdown = dropdown;
}
/*
@@ -1567,18 +1588,6 @@ static const gchar *get_image_settings_string(gint val)
} /* get_image_settings_string() */
/*
- * format_image_settings_value() - callback for the "format-value" signal
- * from the image settings scale.
- */
-
-static gchar *format_image_settings_value(GtkScale *scale, gdouble arg1,
- gpointer user_data)
-{
- return g_strdup(get_image_settings_string(arg1));
-
-} /* format_image_settings_value() */
-
-/*
* post_image_settings_value_changed() - helper function for
* image_settings_value_changed(); this does whatever work is necessary
* after the image settings value has changed.
@@ -1593,15 +1602,16 @@ static void post_image_settings_value_changed(CtkOpenGL *ctk_opengl, gint val)
} /* post_image_settings_value_changed() */
/*
- * image_settings_value_changed() - callback for the "value-changed" signal
- * from the image settings scale.
+ * image_settings_value_changed() - callback for the "changed" signal
+ * from the image settings combobox.
*/
-static void image_settings_value_changed(GtkRange *range, gpointer user_data)
+static void image_settings_value_changed(CtkDropDownMenu *widget,
+ gpointer user_data)
{
CtkOpenGL *ctk_opengl = CTK_OPENGL(user_data);
CtrlTarget *ctrl_target = ctk_opengl->ctrl_target;
- gint val = gtk_range_get_value(range);
+ gint val = ctk_drop_down_menu_get_current_value(widget);
NvCtrlSetAttribute(ctrl_target, NV_CTRL_IMAGE_SETTINGS, val);
post_image_settings_value_changed(ctk_opengl, val);
@@ -1610,7 +1620,7 @@ static void image_settings_value_changed(GtkRange *range, gpointer user_data)
/*
* image_settings_update_received() - this function is called when the
- * NV_CTRL_IMAGE_SETTINGS atribute is changed by another NV-CONTROL client.
+ * NV_CTRL_IMAGE_SETTINGS attribute is changed by another NV-CONTROL client.
*/
static void image_settings_update_received(GObject *object,
@@ -1618,20 +1628,21 @@ static void image_settings_update_received(GObject *object,
gpointer user_data)
{
CtkOpenGL *ctk_opengl = CTK_OPENGL(user_data);
- GtkRange *range = GTK_RANGE(ctk_opengl->image_settings_scale);
+ CtkDropDownMenu *dropdown = CTK_DROP_DOWN_MENU(
+ ctk_opengl->image_settings_dropdown);
if (event->type != CTRL_EVENT_TYPE_INTEGER_ATTRIBUTE) {
return;
}
- g_signal_handlers_block_by_func(G_OBJECT(range),
+ g_signal_handlers_block_by_func(G_OBJECT(dropdown),
G_CALLBACK(image_settings_value_changed),
(gpointer) ctk_opengl);
- gtk_range_set_value(range, event->int_attr.value);
+ ctk_drop_down_menu_set_current_value(dropdown, event->int_attr.value);
post_image_settings_value_changed(ctk_opengl, event->int_attr.value);
- g_signal_handlers_unblock_by_func(G_OBJECT(range),
+ g_signal_handlers_unblock_by_func(G_OBJECT(dropdown),
G_CALLBACK(image_settings_value_changed),
(gpointer) ctk_opengl);
@@ -1866,7 +1877,7 @@ GtkTextBuffer *ctk_opengl_create_help(GtkTextTagTable *table,
ctk_help_para(b, &i, "This setting gives you full control over the "
"image quality in your applications.");
ctk_help_para(b, &i, "Several quality settings are available for "
- "you to choose from with the Image Settings slider. "
+ "you to choose from with the Image Settings options. "
"Note that choosing higher image quality settings may "
"result in decreased performance.");
@@ -1883,8 +1894,7 @@ GtkTextBuffer *ctk_opengl_create_help(GtkTextTagTable *table,
"optimal image quality for your applications.");
ctk_help_term(b, &i, "Performance");
- ctk_help_para(b, &i, "This setting offers an optimal blend of image "
- "quality and performance. The result is optimal "
+ ctk_help_para(b, &i, "This setting results in a blend of optimal "
"performance and good image quality for your "
"applications.");
diff --git a/src/gtk+-2.x/ctkopengl.h b/src/gtk+-2.x/ctkopengl.h
index 71e6ffe..bd404fe 100644
--- a/src/gtk+-2.x/ctkopengl.h
+++ b/src/gtk+-2.x/ctkopengl.h
@@ -64,7 +64,7 @@ struct _CtkOpenGL
GtkWidget *xinerama_stereo_button;
GtkWidget *stereo_eyes_exchange_button;
GtkWidget *stereo_swap_mode_menu;
- GtkWidget *image_settings_scale;
+ GtkWidget *image_settings_dropdown;
GtkWidget *aa_line_gamma_button;
GtkWidget *aa_line_gamma_scale;
GtkWidget *show_sli_visual_indicator_button;
diff --git a/src/gtk+-2.x/ctkthermal.c b/src/gtk+-2.x/ctkthermal.c
index 873e219..1ffb805 100644
--- a/src/gtk+-2.x/ctkthermal.c
+++ b/src/gtk+-2.x/ctkthermal.c
@@ -47,10 +47,16 @@ static void adjustment_value_changed(GtkAdjustment *adjustment,
static void draw_sensor_gui(GtkWidget *vbox1, CtkThermal *ctk_thermal,
gboolean new_target_type, gint cur_sensor_idx,
gint reading, gint lower, gint upper,
- gint target, gint provider);
+ gint target, gint provider, gint slowdown);
static GtkWidget *pack_gauge(GtkWidget *hbox, gint lower, gint upper,
CtkConfig *ctk_config, const char *help);
+static const char *__slowdown_threshold_help =
+"The Slowdown Threshold Temperature is the temperature "
+"at which the NVIDIA Accelerated Graphics driver will throttle "
+"the GPU to prevent damage, in \xc2\xb0"
+/* split for g_utf8_validate() */ "C.";
+
static const char *__core_threshold_help =
"The Core Slowdown Threshold Temperature is the temperature "
"at which the NVIDIA Accelerated Graphics driver will throttle "
@@ -937,7 +943,7 @@ static GtkWidget *pack_gauge(GtkWidget *hbox, gint lower, gint upper,
static void draw_sensor_gui(GtkWidget *vbox1, CtkThermal *ctk_thermal,
gboolean new_target_type, gint cur_sensor_idx,
gint reading, gint lower, gint upper,
- gint target, gint provider)
+ gint target, gint provider, gint slowdown)
{
GtkWidget *hbox, *hbox1, *hbox2, *vbox, *vbox2, *table;
GtkWidget *frame, *label, *hsep;
@@ -998,6 +1004,19 @@ static void draw_sensor_gui(GtkWidget *vbox1, CtkThermal *ctk_thermal,
ctk_thermal->sensor_info[cur_sensor_idx].provider_type = NULL;
}
+ /* Upper limit, slowdown threshold */
+ if (slowdown > 0) {
+ s = g_strdup_printf("%d\xc2\xb0" /* split for g_utf8_validate() */ "C",
+ slowdown);
+ add_table_row_with_help_text(table, ctk_thermal->ctk_config,
+ __slowdown_threshold_help,
+ 2, 0, 0, 0.5,
+ "Slowdown Temp:", 0, 0.5,
+ s);
+ ctk_thermal->sensor_info[cur_sensor_idx].provider_type = label;
+ g_free(s);
+ }
+
/* thermal sensor reading */
if (reading) {
hbox2 = gtk_hbox_new(FALSE, 0);
@@ -1076,6 +1095,7 @@ GtkWidget* ctk_thermal_new(CtrlTarget *ctrl_target,
Bool cooler_control_enabled;
int cur_cooler_idx = 0;
int cur_sensor_idx = 0;
+ int slowdown;
Bool thermal_sensor_target_type_supported = FALSE;
/* make sure we have a handle */
@@ -1208,6 +1228,13 @@ GtkWidget* ctk_thermal_new(CtrlTarget *ctrl_target,
hsep = gtk_hseparator_new();
gtk_box_pack_start(GTK_BOX(hbox1), hsep, TRUE, TRUE, 0);
+ ret = NvCtrlGetAttribute(ctk_thermal->ctrl_target,
+ NV_CTRL_GPU_SLOWDOWN_THRESHOLD,
+ &slowdown);
+ if (ret != NvCtrlSuccess) {
+ slowdown = 0;
+ }
+
if (ctk_thermal->sensor_count > 0) {
ctk_thermal->sensor_info = (SensorInfoPtr)
nvalloc(ctk_thermal->sensor_count * sizeof(SensorInfoRec));
@@ -1260,7 +1287,7 @@ GtkWidget* ctk_thermal_new(CtrlTarget *ctrl_target,
draw_sensor_gui(vbox, ctk_thermal, thermal_sensor_target_type_supported,
cur_sensor_idx,
reading, sensor_range.range.min,
- sensor_range.range.max, target, provider);
+ sensor_range.range.max, target, provider, slowdown);
cur_sensor_idx++;
}
} else {
diff --git a/src/gtk+-2.x/ctkui.c b/src/gtk+-2.x/ctkui.c
index ce5ef08..170ab8c 100644
--- a/src/gtk+-2.x/ctkui.c
+++ b/src/gtk+-2.x/ctkui.c
@@ -42,8 +42,6 @@ void ctk_main(ParsedAttribute *p,
CtrlSystem *system,
const char *page)
{
- CtrlTargetNode *node;
- int has_nv_control = FALSE;
GList *list = NULL;
GtkWidget *window;
@@ -51,14 +49,7 @@ void ctk_main(ParsedAttribute *p,
gtk_window_set_default_icon_list(list);
window = ctk_window_new(p, conf, system);
- for (node = system->targets[X_SCREEN_TARGET]; node; node = node->next) {
- if (node->t->h) {
- has_nv_control = TRUE;
- break;
- }
- }
-
- if (!has_nv_control) {
+ if (!system->has_nv_control) {
GtkWidget *dlg;
dlg = gtk_message_dialog_new (NULL,
GTK_DIALOG_MODAL,
diff --git a/src/libXNVCtrl/NVCtrl.h b/src/libXNVCtrl/NVCtrl.h
index 1ae1964..f7c07d1 100644
--- a/src/libXNVCtrl/NVCtrl.h
+++ b/src/libXNVCtrl/NVCtrl.h
@@ -826,16 +826,16 @@
/*
- * NV_CTRL_GPU_CORE_THRESHOLD reports the current GPU core slowdown
- * threshold temperature, NV_CTRL_GPU_DEFAULT_CORE_THRESHOLD and
- * NV_CTRL_GPU_MAX_CORE_THRESHOLD report the default and MAX core
- * slowdown threshold temperatures.
- *
- * NV_CTRL_GPU_CORE_THRESHOLD reflects the temperature at which the
+ * NV_CTRL_GPU_SLOWDOWN_THRESHOLD reflects the temperature at which the
* GPU is throttled to prevent overheating.
+ *
+ * NV_CTRL_GPU_CORE_THRESHOLD, NV_CTRL_GPU_DEFAULT_CORE_THRESHOLD,
+ * and NV_CTRL_MAX_CORE_THRESHOLD are deprecated but report the
+ * same value as NV_CTRL_GPU_SLOWDOWN_THRESHOLD.
*/
-#define NV_CTRL_GPU_CORE_THRESHOLD 61 /* R--G */
+#define NV_CTRL_GPU_SLOWDOWN_THRESHOLD 61 /* R--G */
+#define NV_CTRL_GPU_CORE_THRESHOLD NV_CTRL_GPU_SLOWDOWN_THRESHOLD
#define NV_CTRL_GPU_DEFAULT_CORE_THRESHOLD 62 /* R--G */
#define NV_CTRL_GPU_MAX_CORE_THRESHOLD 63 /* R--G */
@@ -3576,7 +3576,22 @@
#define NV_CTRL_DISPLAY_VRR_ENABLED_FALSE 0
#define NV_CTRL_DISPLAY_VRR_ENABLED_TRUE 1
-#define NV_CTRL_LAST_ATTRIBUTE NV_CTRL_DISPLAY_VRR_ENABLED
+/*
+ * NV_CTRL_GPU_SHUTDOWN_THRESHOLD reflects the temperature at which the
+ * GPU is halted to prevent overheating.
+ */
+
+#define NV_CTRL_GPU_SHUTDOWN_THRESHOLD 432 /* R--G */
+
+/*
+ * NV_CTRL_GPU_MAX_OPERATING_THRESHOLD reflects the maximum temperature for
+ * normal GPU behavior.
+ */
+
+#define NV_CTRL_GPU_MAX_OPERATING_THRESHOLD 433 /* R--G */
+
+
+#define NV_CTRL_LAST_ATTRIBUTE NV_CTRL_GPU_MAX_OPERATING_THRESHOLD
/**************************************************************************/
diff --git a/src/libXNVCtrl/version.mk b/src/libXNVCtrl/version.mk
index 3431911..160bbfd 100644
--- a/src/libXNVCtrl/version.mk
+++ b/src/libXNVCtrl/version.mk
@@ -1 +1 @@
-NVIDIA_VERSION = 430.40
+NVIDIA_VERSION = 435.17
diff --git a/src/libXNVCtrlAttributes/NvCtrlAttributes.h b/src/libXNVCtrlAttributes/NvCtrlAttributes.h
index 636d7e2..668510e 100644
--- a/src/libXNVCtrlAttributes/NvCtrlAttributes.h
+++ b/src/libXNVCtrlAttributes/NvCtrlAttributes.h
@@ -138,6 +138,7 @@ struct _CtrlSystem {
/* X system data */
char *display; /* string for XOpenDisplay */
Display *dpy; /* X display connection */
+ Bool has_nv_control;
CtrlTargetNode *targets[MAX_TARGET_TYPES]; /* Shadows targetTypeTable */
CtrlTargetNode *physical_screens;
diff --git a/src/libXNVCtrlAttributes/NvCtrlAttributesUtils.c b/src/libXNVCtrlAttributes/NvCtrlAttributesUtils.c
index b18c199..73698cc 100644
--- a/src/libXNVCtrlAttributes/NvCtrlAttributesUtils.c
+++ b/src/libXNVCtrlAttributes/NvCtrlAttributesUtils.c
@@ -34,6 +34,8 @@
#include "NvCtrlAttributes.h"
#include "NvCtrlAttributesPrivate.h"
+#include "NVCtrlLib.h"
+
/*!
@@ -841,6 +843,7 @@ static Bool load_system_info(CtrlSystem *system, const char *display)
CtrlTarget *xscreenQueryTarget = NULL;
CtrlTarget *nvmlQueryTarget = NULL;
int i, target_type, val, len, target_count;
+ int unused;
int *pData = NULL;
const CtrlTargetTypeInfo *targetTypeInfo;
@@ -862,6 +865,9 @@ static Bool load_system_info(CtrlSystem *system, const char *display)
return FALSE;
}
+ system->has_nv_control =
+ XNVCTRLQueryExtension(system->dpy, &unused, &unused);
+
/* Try to initialize the NVML library */
nvmlQueryTarget = nv_alloc_ctrl_target(system, GPU_TARGET, 0,
NV_CTRL_ATTRIBUTES_NV_CONTROL_SUBSYSTEM |
diff --git a/src/parse.c b/src/parse.c
index d28a0be..fb1560e 100644
--- a/src/parse.c
+++ b/src/parse.c
@@ -208,6 +208,9 @@ const AttributeTableEntry attributeTable[] = {
{ "GPUPerfModes", NV_CTRL_STRING_PERFORMANCE_MODES, STR_ATTR, {0,0,0,0,1,0}, {}, "Returns a string with all the performance modes defined for this GPU along with their associated NV Clock and Memory Clock values." },
{ "GpuUUID", NV_CTRL_STRING_GPU_UUID, STR_ATTR, {0,0,0,0,1,0}, {}, "Returns the global unique identifier of the GPU." },
{ "GPUUtilization", NV_CTRL_STRING_GPU_UTILIZATION, STR_ATTR, {0,0,0,0,1,0}, {}, "Returns the current percentage utilization of the GPU components." },
+ { "GPUSlowdownTempThreshold", NV_CTRL_GPU_SLOWDOWN_THRESHOLD, INT_ATTR, {0,0,0,0,1,0}, {}, "Returns the temperature above which the GPU will slowdown for hardware protection." },
+ { "GPUShutdownTempThreshold", NV_CTRL_GPU_SHUTDOWN_THRESHOLD, INT_ATTR, {0,0,0,0,1,0}, {}, "Returns the temperature at which the GPU will shutdown for hardware protection." },
+ { "GPUMaxOperatingTempThreshold", NV_CTRL_GPU_MAX_OPERATING_THRESHOLD, INT_ATTR, {0,0,0,0,1,0}, {}, "Returns the maximum temperature that will support normal GPU behavior." },
/* Framelock */
{ "FrameLockAvailable", NV_CTRL_FRAMELOCK, INT_ATTR, {1,1,0,0,1,0}, { .int_flags = {0,0,0,0,0,0,0} }, "Returns whether the underlying GPU supports Frame Lock. All of the other frame lock attributes are only applicable if this attribute is enabled (Supported)." },
@@ -398,7 +401,7 @@ const int attributeTableLen = ARRAY_LEN(attributeTable);
* the last attribute that the table knows about.
*/
-#if NV_CTRL_LAST_ATTRIBUTE != NV_CTRL_DISPLAY_VRR_ENABLED
+#if NV_CTRL_LAST_ATTRIBUTE != NV_CTRL_GPU_MAX_OPERATING_THRESHOLD
#warning "Have you forgotten to add a new integer attribute to attributeTable?"
#endif
diff --git a/src/version.h b/src/version.h
index ec1154f..4d22ba6 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1 +1 @@
-#define NVIDIA_VERSION "430.40"
+#define NVIDIA_VERSION "435.17"
diff --git a/src/version.mk b/src/version.mk
index 3431911..160bbfd 100644
--- a/src/version.mk
+++ b/src/version.mk
@@ -1 +1 @@
-NVIDIA_VERSION = 430.40
+NVIDIA_VERSION = 435.17
diff --git a/version.mk b/version.mk
index 3431911..160bbfd 100644
--- a/version.mk
+++ b/version.mk
@@ -1 +1 @@
-NVIDIA_VERSION = 430.40
+NVIDIA_VERSION = 435.17