Skip to content

Commit 001711f

Browse files
committed
StatusBox: Split GPU memory details over multiple lines
- with the addition of dedicated memory, the info is too long for some themes, so split out and only update the used/free figures
1 parent 136aee1 commit 001711f

File tree

3 files changed

+47
-25
lines changed

3 files changed

+47
-25
lines changed

mythtv/libs/libmythui/opengl/mythrenderopengl.cpp

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1530,21 +1530,20 @@ void MythRenderOpenGL::SetMatrixView(void)
15301530
m_projection.ortho(m_viewport);
15311531
}
15321532

1533-
bool MythRenderOpenGL::GetGPUMemory(int &Available, int &Dedicated, int &Total)
1533+
std::tuple<int, int, int> MythRenderOpenGL::GetGPUMemory()
15341534
{
15351535
OpenGLLocker locker(this);
15361536
if (m_extraFeaturesUsed & kGLNVMemory)
15371537
{
1538-
GLint kb = 0;
1539-
glGetIntegerv(GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX, &kb);
1540-
Total = kb / 1024;
1541-
glGetIntegerv(GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX, &kb);
1542-
Dedicated = kb / 1024;
1543-
glGetIntegerv(GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX, &kb);
1544-
Available = kb / 1024;
1545-
return true;
1538+
GLint total = 0;
1539+
GLint dedicated = 0;
1540+
GLint available = 0;
1541+
glGetIntegerv(GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX, &total);
1542+
glGetIntegerv(GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX, &dedicated);
1543+
glGetIntegerv(GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX, &available);
1544+
return { total / 1024, dedicated / 1024, available / 1024 };
15461545
}
1547-
return false;
1546+
return { 0, 0, 0 };
15481547
}
15491548

15501549
/*! \brief Check for 16bit framebufferobject support

mythtv/libs/libmythui/opengl/mythrenderopengl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ class MUI_PUBLIC MythRenderOpenGL : public QOpenGLContext, public QOpenGLFunctio
165165
const QBrush &FillBrush, const QPen &LinePen, int Alpha);
166166
void ClearRect(QOpenGLFramebufferObject *Target, QRect Area, int Color);
167167

168-
bool GetGPUMemory(int &Available, int& Dedicated, int &Total);
168+
std::tuple<int,int,int> GetGPUMemory();
169169

170170
public slots:
171171
void MessageLogged (const QOpenGLDebugMessage &Message);

mythtv/programs/mythfrontend/statusbox.cpp

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1567,25 +1567,48 @@ void StatusBox::doDisplayStatus()
15671567
MythRenderOpenGL* gl = MythRenderOpenGL::GetOpenGLRender();
15681568
if (gl && (gl->GetExtraFeatures() & kGLNVMemory))
15691569
{
1570-
auto UpdateGPUMem = [](StatusBoxItem *Item)
1570+
auto GetGPUMem = []()
15711571
{
1572-
int dedicated = 0;
1573-
int total = 0;
1574-
int available = 0;
1575-
MythRenderOpenGL* opengl = MythRenderOpenGL::GetOpenGLRender();
1576-
if (opengl)
1577-
opengl->GetGPUMemory(available, dedicated, total);
1572+
if (auto * opengl = MythRenderOpenGL::GetOpenGLRender(); opengl)
1573+
return opengl->GetGPUMemory();
1574+
return std::tuple<int,int,int>{ 0, 0, 0 };
1575+
};
1576+
1577+
auto UpdateUsed = [&GetGPUMem](StatusBoxItem* Item)
1578+
{
1579+
auto mem = GetGPUMem();
1580+
int total = std::get<0>(mem);
1581+
if (total > 0)
1582+
{
1583+
int avail = std::get<2>(mem);
1584+
Item->SetText(tr("GPU memory used : %1MB").arg(total - avail));
1585+
}
1586+
};
1587+
1588+
auto UpdateFree = [&GetGPUMem](StatusBoxItem* Item)
1589+
{
1590+
auto mem = GetGPUMem();
1591+
int total = std::get<0>(mem);
15781592
if (total > 0)
15791593
{
1580-
int percent = static_cast<int>((available / static_cast<float>(total) * 100.0F));
1581-
Item->SetText(tr("GPU Memory: %1 MB total, %2 MB dedicated, %3 MB used, %4 MB (or %5%) free")
1582-
.arg(total).arg(dedicated).arg(total - available).arg(available).arg(percent));
1594+
int avail = std::get<2>(mem);
1595+
int percent = static_cast<int>((avail / static_cast<float>(total) * 100.0F));
1596+
Item->SetText(tr("GPU memory free : %1MB (or %2%)").arg(avail).arg(percent));
15831597
}
15841598
};
1585-
StatusBoxItem* gpumem = AddLogLine("");
1586-
UpdateGPUMem(gpumem);
1587-
connect(gpumem, &StatusBoxItem::UpdateRequired, UpdateGPUMem);
1588-
gpumem->Start();
1599+
1600+
auto current = GetGPUMem();
1601+
// Total and dedicated will not change
1602+
AddLogLine(tr("GPU memory total : %1MB").arg(std::get<0>(current)));
1603+
AddLogLine(tr("GPU memory dedicated: %1MB").arg(std::get<1>(current)));
1604+
auto * used = AddLogLine("");
1605+
auto * freemem = AddLogLine("");
1606+
UpdateUsed(used);
1607+
UpdateFree(freemem);
1608+
connect(used, &StatusBoxItem::UpdateRequired, UpdateUsed);
1609+
connect(freemem, &StatusBoxItem::UpdateRequired, UpdateFree);
1610+
used->Start();
1611+
freemem->Start();
15891612
}
15901613

15911614
desc = render->GetDescription();

0 commit comments

Comments
 (0)