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