mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-08-28 17:36:36 +00:00
Disable shader buttons when no shader is bound
This commit is contained in:
@@ -805,6 +805,18 @@ void D3D11PipelineStateViewer::clearState()
|
||||
clearShaderState(ui->psShader, ui->psResources, ui->psSamplers, ui->psCBuffers, ui->psClasses);
|
||||
clearShaderState(ui->csShader, ui->csResources, ui->csSamplers, ui->csCBuffers, ui->csClasses);
|
||||
|
||||
QToolButton *shaderButtons[] = {
|
||||
ui->vsShaderViewButton, ui->hsShaderViewButton, ui->dsShaderViewButton,
|
||||
ui->gsShaderViewButton, ui->psShaderViewButton, ui->csShaderViewButton,
|
||||
ui->vsShaderEditButton, ui->hsShaderEditButton, ui->dsShaderEditButton,
|
||||
ui->gsShaderEditButton, ui->psShaderEditButton, ui->csShaderEditButton,
|
||||
ui->vsShaderSaveButton, ui->hsShaderSaveButton, ui->dsShaderSaveButton,
|
||||
ui->gsShaderSaveButton, ui->psShaderSaveButton, ui->csShaderSaveButton,
|
||||
};
|
||||
|
||||
for(QToolButton *b : shaderButtons)
|
||||
b->setEnabled(false);
|
||||
|
||||
ui->csUAVs->clear();
|
||||
|
||||
const QPixmap &tick = Pixmaps::tick(this);
|
||||
@@ -849,6 +861,18 @@ void D3D11PipelineStateViewer::clearState()
|
||||
ui->stencils->clear();
|
||||
|
||||
ui->predicateGroup->setVisible(false);
|
||||
|
||||
{
|
||||
ui->groupX->setEnabled(false);
|
||||
ui->groupY->setEnabled(false);
|
||||
ui->groupZ->setEnabled(false);
|
||||
|
||||
ui->threadX->setEnabled(false);
|
||||
ui->threadY->setEnabled(false);
|
||||
ui->threadZ->setEnabled(false);
|
||||
|
||||
ui->debugThread->setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
void D3D11PipelineStateViewer::setShaderState(const D3D11Pipe::Shader &stage, RDLabel *shader,
|
||||
@@ -1409,6 +1433,25 @@ void D3D11PipelineStateViewer::setState()
|
||||
setShaderState(state.computeShader, ui->csShader, ui->csResources, ui->csSamplers, ui->csCBuffers,
|
||||
ui->csClasses);
|
||||
|
||||
QToolButton *shaderButtons[] = {
|
||||
ui->vsShaderViewButton, ui->hsShaderViewButton, ui->dsShaderViewButton,
|
||||
ui->gsShaderViewButton, ui->psShaderViewButton, ui->csShaderViewButton,
|
||||
ui->vsShaderEditButton, ui->hsShaderEditButton, ui->dsShaderEditButton,
|
||||
ui->gsShaderEditButton, ui->psShaderEditButton, ui->csShaderEditButton,
|
||||
ui->vsShaderSaveButton, ui->hsShaderSaveButton, ui->dsShaderSaveButton,
|
||||
ui->gsShaderSaveButton, ui->psShaderSaveButton, ui->csShaderSaveButton,
|
||||
};
|
||||
|
||||
for(QToolButton *b : shaderButtons)
|
||||
{
|
||||
const D3D11Pipe::Shader *stage = stageForSender(b);
|
||||
|
||||
if(stage == NULL || stage->resourceId == ResourceId())
|
||||
continue;
|
||||
|
||||
b->setEnabled(stage->reflection);
|
||||
}
|
||||
|
||||
vs = ui->csUAVs->verticalScrollBar()->value();
|
||||
ui->csUAVs->beginUpdate();
|
||||
ui->csUAVs->clear();
|
||||
|
||||
@@ -902,6 +902,18 @@ void D3D12PipelineStateViewer::clearState()
|
||||
clearShaderState(ui->csShader, ui->csRootSig, ui->csResources, ui->csSamplers, ui->csCBuffers,
|
||||
ui->csUAVs);
|
||||
|
||||
QToolButton *shaderButtons[] = {
|
||||
ui->vsShaderViewButton, ui->hsShaderViewButton, ui->dsShaderViewButton,
|
||||
ui->gsShaderViewButton, ui->psShaderViewButton, ui->csShaderViewButton,
|
||||
ui->vsShaderEditButton, ui->hsShaderEditButton, ui->dsShaderEditButton,
|
||||
ui->gsShaderEditButton, ui->psShaderEditButton, ui->csShaderEditButton,
|
||||
ui->vsShaderSaveButton, ui->hsShaderSaveButton, ui->dsShaderSaveButton,
|
||||
ui->gsShaderSaveButton, ui->psShaderSaveButton, ui->csShaderSaveButton,
|
||||
};
|
||||
|
||||
for(QToolButton *b : shaderButtons)
|
||||
b->setEnabled(false);
|
||||
|
||||
const QPixmap &tick = Pixmaps::tick(this);
|
||||
const QPixmap &cross = Pixmaps::cross(this);
|
||||
|
||||
@@ -1439,6 +1451,25 @@ void D3D12PipelineStateViewer::setState()
|
||||
setShaderState(state.computeShader, ui->csShader, ui->csRootSig, ui->csResources, ui->csSamplers,
|
||||
ui->csCBuffers, ui->csUAVs);
|
||||
|
||||
QToolButton *shaderButtons[] = {
|
||||
ui->vsShaderViewButton, ui->hsShaderViewButton, ui->dsShaderViewButton,
|
||||
ui->gsShaderViewButton, ui->psShaderViewButton, ui->csShaderViewButton,
|
||||
ui->vsShaderEditButton, ui->hsShaderEditButton, ui->dsShaderEditButton,
|
||||
ui->gsShaderEditButton, ui->psShaderEditButton, ui->csShaderEditButton,
|
||||
ui->vsShaderSaveButton, ui->hsShaderSaveButton, ui->dsShaderSaveButton,
|
||||
ui->gsShaderSaveButton, ui->psShaderSaveButton, ui->csShaderSaveButton,
|
||||
};
|
||||
|
||||
for(QToolButton *b : shaderButtons)
|
||||
{
|
||||
const D3D12Pipe::Shader *stage = stageForSender(b);
|
||||
|
||||
if(stage == NULL || stage->resourceId == ResourceId())
|
||||
continue;
|
||||
|
||||
b->setEnabled(stage->reflection && state.pipelineResourceId != ResourceId());
|
||||
}
|
||||
|
||||
bool streamoutSet = false;
|
||||
vs = ui->gsStreamOut->verticalScrollBar()->value();
|
||||
ui->gsStreamOut->beginUpdate();
|
||||
|
||||
@@ -540,6 +540,18 @@ void GLPipelineStateViewer::clearState()
|
||||
clearShaderState(ui->csShader, ui->csTextures, ui->csSamplers, ui->csUBOs, ui->csSubroutines,
|
||||
ui->csReadWrite);
|
||||
|
||||
QToolButton *shaderButtons[] = {
|
||||
ui->vsShaderViewButton, ui->tcsShaderViewButton, ui->tesShaderViewButton,
|
||||
ui->gsShaderViewButton, ui->fsShaderViewButton, ui->csShaderViewButton,
|
||||
ui->vsShaderEditButton, ui->tcsShaderEditButton, ui->tesShaderEditButton,
|
||||
ui->gsShaderEditButton, ui->fsShaderEditButton, ui->csShaderEditButton,
|
||||
ui->vsShaderSaveButton, ui->tcsShaderSaveButton, ui->tesShaderSaveButton,
|
||||
ui->gsShaderSaveButton, ui->fsShaderSaveButton, ui->csShaderSaveButton,
|
||||
};
|
||||
|
||||
for(QToolButton *b : shaderButtons)
|
||||
b->setEnabled(false);
|
||||
|
||||
const QPixmap &tick = Pixmaps::tick(this);
|
||||
const QPixmap &cross = Pixmaps::cross(this);
|
||||
|
||||
@@ -1354,6 +1366,27 @@ void GLPipelineStateViewer::setState()
|
||||
setShaderState(state.computeShader, ui->csShader, ui->csTextures, ui->csSamplers, ui->csUBOs,
|
||||
ui->csSubroutines, ui->csReadWrite);
|
||||
|
||||
QToolButton *shaderButtons[] = {
|
||||
ui->vsShaderViewButton, ui->tcsShaderViewButton, ui->tesShaderViewButton,
|
||||
ui->gsShaderViewButton, ui->fsShaderViewButton, ui->csShaderViewButton,
|
||||
ui->vsShaderEditButton, ui->tcsShaderEditButton, ui->tesShaderEditButton,
|
||||
ui->gsShaderEditButton, ui->fsShaderEditButton, ui->csShaderEditButton,
|
||||
ui->vsShaderSaveButton, ui->tcsShaderSaveButton, ui->tesShaderSaveButton,
|
||||
ui->gsShaderSaveButton, ui->fsShaderSaveButton, ui->csShaderSaveButton,
|
||||
};
|
||||
|
||||
for(QToolButton *b : shaderButtons)
|
||||
{
|
||||
const GLPipe::Shader *stage = stageForSender(b);
|
||||
|
||||
if(stage == NULL || stage->shaderResourceId == ResourceId())
|
||||
continue;
|
||||
|
||||
ShaderReflection *shaderDetails = stage->reflection;
|
||||
|
||||
b->setEnabled(shaderDetails);
|
||||
}
|
||||
|
||||
vs = ui->xfbBuffers->verticalScrollBar()->value();
|
||||
ui->xfbBuffers->beginUpdate();
|
||||
ui->xfbBuffers->clear();
|
||||
|
||||
@@ -560,6 +560,18 @@ void VulkanPipelineStateViewer::clearState()
|
||||
clearShaderState(ui->fsShader, ui->fsResources, ui->fsUBOs);
|
||||
clearShaderState(ui->csShader, ui->csResources, ui->csUBOs);
|
||||
|
||||
QToolButton *shaderButtons[] = {
|
||||
ui->vsShaderViewButton, ui->tcsShaderViewButton, ui->tesShaderViewButton,
|
||||
ui->gsShaderViewButton, ui->fsShaderViewButton, ui->csShaderViewButton,
|
||||
ui->vsShaderEditButton, ui->tcsShaderEditButton, ui->tesShaderEditButton,
|
||||
ui->gsShaderEditButton, ui->fsShaderEditButton, ui->csShaderEditButton,
|
||||
ui->vsShaderSaveButton, ui->tcsShaderSaveButton, ui->tesShaderSaveButton,
|
||||
ui->gsShaderSaveButton, ui->fsShaderSaveButton, ui->csShaderSaveButton,
|
||||
};
|
||||
|
||||
for(QToolButton *b : shaderButtons)
|
||||
b->setEnabled(false);
|
||||
|
||||
const QPixmap &tick = Pixmaps::tick(this);
|
||||
|
||||
ui->fillMode->setText(tr("Solid", "Fill Mode"));
|
||||
@@ -1737,6 +1749,30 @@ void VulkanPipelineStateViewer::setState()
|
||||
setShaderState(state.fragmentShader, state.graphics, ui->fsShader, ui->fsResources, ui->fsUBOs);
|
||||
setShaderState(state.computeShader, state.compute, ui->csShader, ui->csResources, ui->csUBOs);
|
||||
|
||||
QToolButton *shaderButtons[] = {
|
||||
ui->vsShaderViewButton, ui->tcsShaderViewButton, ui->tesShaderViewButton,
|
||||
ui->gsShaderViewButton, ui->fsShaderViewButton, ui->csShaderViewButton,
|
||||
ui->vsShaderEditButton, ui->tcsShaderEditButton, ui->tesShaderEditButton,
|
||||
ui->gsShaderEditButton, ui->fsShaderEditButton, ui->csShaderEditButton,
|
||||
ui->vsShaderSaveButton, ui->tcsShaderSaveButton, ui->tesShaderSaveButton,
|
||||
ui->gsShaderSaveButton, ui->fsShaderSaveButton, ui->csShaderSaveButton,
|
||||
};
|
||||
|
||||
for(QToolButton *b : shaderButtons)
|
||||
{
|
||||
const VKPipe::Shader *stage = stageForSender(b);
|
||||
|
||||
if(stage == NULL || stage->resourceId == ResourceId())
|
||||
continue;
|
||||
|
||||
ShaderReflection *shaderDetails = stage->reflection;
|
||||
|
||||
ResourceId pipe = stage->stage == ShaderStage::Compute ? state.compute.pipelineResourceId
|
||||
: state.graphics.pipelineResourceId;
|
||||
|
||||
b->setEnabled(shaderDetails && pipe != ResourceId());
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////
|
||||
// Rasterizer
|
||||
|
||||
|
||||
Reference in New Issue
Block a user