diff --git a/qrenderdoc/Windows/BufferViewer.cpp b/qrenderdoc/Windows/BufferViewer.cpp
index 2b5c7e81f..a6c360e96 100644
--- a/qrenderdoc/Windows/BufferViewer.cpp
+++ b/qrenderdoc/Windows/BufferViewer.cpp
@@ -1007,6 +1007,13 @@ void BufferViewer::SetupMeshView()
{
setWindowTitle(tr("Mesh Output"));
+ // hide buttons we don't want in the toolbar
+ ui->byteRangeLine->setVisible(false);
+ ui->byteRangeStartLabel->setVisible(false);
+ ui->byteRangeStart->setVisible(false);
+ ui->byteRangeLengthLabel->setVisible(false);
+ ui->byteRangeLength->setVisible(false);
+
ui->formatSpecifier->setVisible(false);
ui->cameraControlsGroup->setVisible(false);
@@ -2317,7 +2324,10 @@ void BufferViewer::ViewBuffer(uint64_t byteOffset, uint64_t byteSize, ResourceId
BufferDescription *buf = m_Ctx.GetBuffer(id);
if(buf)
+ {
setWindowTitle(ToQStr(buf->name) + lit(" - Contents"));
+ m_ObjectByteSize = buf->length;
+ }
processFormat(format);
}
@@ -2334,7 +2344,10 @@ void BufferViewer::ViewTexture(uint32_t arrayIdx, uint32_t mip, ResourceId id, c
TextureDescription *tex = m_Ctx.GetTexture(id);
if(tex)
+ {
setWindowTitle(ToQStr(tex->name) + lit(" - Contents"));
+ m_ObjectByteSize = tex->byteSize;
+ }
processFormat(format);
}
@@ -2650,13 +2663,44 @@ void BufferViewer::processFormat(const QString &format)
ClearModels();
+ m_Format = format;
+
m_ModelVSIn->columns = FormatElement::ParseFormatString(format, 0, true, errors);
+ uint32_t stride = 0;
+ for(const FormatElement &el : m_ModelVSIn->columns)
+ stride += el.byteSize();
+
+ stride = qMax(1U, stride);
+
+ ui->byteRangeStart->setSingleStep((int)stride);
+ ui->byteRangeLength->setSingleStep((int)stride);
+
+ ui->byteRangeStart->setMaximum((int)m_ObjectByteSize);
+ ui->byteRangeLength->setMaximum((int)m_ObjectByteSize);
+
+ ui->byteRangeStart->setValue((int)m_ByteOffset);
+ ui->byteRangeLength->setValue((int)m_ByteSize);
+
ui->formatSpecifier->setErrors(errors);
OnEventChanged(m_Ctx.CurEvent());
}
+void BufferViewer::on_byteRangeStart_valueChanged(int value)
+{
+ m_ByteOffset = value;
+
+ processFormat(m_Format);
+}
+
+void BufferViewer::on_byteRangeLength_valueChanged(int value)
+{
+ m_ByteSize = value;
+
+ processFormat(m_Format);
+}
+
void BufferViewer::exportData(const BufferExport ¶ms)
{
if(!m_Ctx.LogLoaded())
diff --git a/qrenderdoc/Windows/BufferViewer.h b/qrenderdoc/Windows/BufferViewer.h
index 4190ee8c5..b7baf3913 100644
--- a/qrenderdoc/Windows/BufferViewer.h
+++ b/qrenderdoc/Windows/BufferViewer.h
@@ -95,8 +95,10 @@ private slots:
void on_drawRange_currentIndexChanged(int index);
void on_controlType_currentIndexChanged(int index);
void on_camSpeed_valueChanged(double value);
- void on_instance_valueChanged(int arg1);
- void on_rowOffset_valueChanged(int arg1);
+ void on_instance_valueChanged(int value);
+ void on_rowOffset_valueChanged(int value);
+ void on_byteRangeStart_valueChanged(int value);
+ void on_byteRangeLength_valueChanged(int value);
// manual slots
void render_mouseMove(QMouseEvent *e);
@@ -174,9 +176,11 @@ private:
// data from raw buffer view
bool m_IsBuffer = true;
+ QString m_Format;
uint32_t m_TexArrayIdx = 0;
uint32_t m_TexMip = 0;
uint64_t m_ByteOffset = 0;
+ uint64_t m_ObjectByteSize = UINT64_MAX;
uint64_t m_ByteSize = UINT64_MAX;
ResourceId m_BufferID;
@@ -240,4 +244,4 @@ private:
void SyncViews(RDTableView *primary, bool selection, bool scroll);
void UpdateHighlightVerts();
void ScrollToRow(BufferItemModel *model, int row);
-};
\ No newline at end of file
+};
diff --git a/qrenderdoc/Windows/BufferViewer.ui b/qrenderdoc/Windows/BufferViewer.ui
index 960d3b7a0..b32dbe64d 100644
--- a/qrenderdoc/Windows/BufferViewer.ui
+++ b/qrenderdoc/Windows/BufferViewer.ui
@@ -6,7 +6,7 @@
0
0
- 761
+ 788
537
@@ -577,9 +577,9 @@
- 50
+ 0
10
- 435
+ 767
28
@@ -702,9 +702,6 @@
-
-
-
-
1000000
@@ -724,6 +721,41 @@
+ -
+
+
+ Qt::Vertical
+
+
+
+ -
+
+
+ Byte Range Start
+
+
+
+ -
+
+
+ 999123456
+
+
+
+ -
+
+
+ Length
+
+
+
+ -
+
+
+ 999123456
+
+
+
-
@@ -782,6 +814,11 @@
+
+ ToolWindowManager
+ QWidget
+ 3rdparty/toolwindowmanager/ToolWindowManager.h
+
CustomPaintWidget
QWidget
@@ -792,11 +829,6 @@
QTableView
Widgets/Extended/RDTableView.h
-
- ToolWindowManager
- QWidget
- 3rdparty/toolwindowmanager/ToolWindowManager.h
-
BufferFormatSpecifier
QWidget