mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-25 14:30:22 +01:00
lavapipe: update multisample state after blend state
null blend pipeline state will zero the blend struct, which would cause
values set here to be overwritten
cc: mesa-stable
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15282>
(cherry picked from commit 7114490115)
This commit is contained in:
parent
f7ee7575a4
commit
092f43be3a
2 changed files with 35 additions and 35 deletions
|
|
@ -931,7 +931,7 @@
|
|||
"description": "lavapipe: update multisample state after blend state",
|
||||
"nominated": true,
|
||||
"nomination_type": 0,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null
|
||||
},
|
||||
|
|
|
|||
|
|
@ -574,40 +574,6 @@ static void handle_graphics_pipeline(struct vk_cmd_queue_entry *cmd,
|
|||
state->rs_dirty = true;
|
||||
}
|
||||
|
||||
state->disable_multisample = pipeline->disable_multisample;
|
||||
if (pipeline->graphics_create_info.pMultisampleState) {
|
||||
const VkPipelineMultisampleStateCreateInfo *ms = pipeline->graphics_create_info.pMultisampleState;
|
||||
state->rs_state.multisample = ms->rasterizationSamples > 1;
|
||||
state->sample_mask = ms->pSampleMask ? ms->pSampleMask[0] : 0xffffffff;
|
||||
state->blend_state.alpha_to_coverage = ms->alphaToCoverageEnable;
|
||||
state->blend_state.alpha_to_one = ms->alphaToOneEnable;
|
||||
state->blend_dirty = true;
|
||||
state->rs_dirty = true;
|
||||
state->min_samples = 1;
|
||||
state->sample_mask_dirty = true;
|
||||
fb_samples = ms->rasterizationSamples;
|
||||
if (ms->sampleShadingEnable) {
|
||||
state->min_samples = ceil(ms->rasterizationSamples * ms->minSampleShading);
|
||||
if (state->min_samples > 1)
|
||||
state->min_samples = ms->rasterizationSamples;
|
||||
if (state->min_samples < 1)
|
||||
state->min_samples = 1;
|
||||
}
|
||||
if (pipeline->force_min_sample)
|
||||
state->min_samples = ms->rasterizationSamples;
|
||||
state->min_samples_dirty = true;
|
||||
} else {
|
||||
state->rs_state.multisample = false;
|
||||
state->sample_mask_dirty = state->sample_mask != 0xffffffff;
|
||||
state->sample_mask = 0xffffffff;
|
||||
state->min_samples_dirty = state->min_samples;
|
||||
state->min_samples = 0;
|
||||
state->blend_dirty |= state->blend_state.alpha_to_coverage || state->blend_state.alpha_to_one;
|
||||
state->blend_state.alpha_to_coverage = false;
|
||||
state->blend_state.alpha_to_one = false;
|
||||
state->rs_dirty = true;
|
||||
}
|
||||
|
||||
if (pipeline->graphics_create_info.pDepthStencilState) {
|
||||
const VkPipelineDepthStencilStateCreateInfo *dsa = pipeline->graphics_create_info.pDepthStencilState;
|
||||
|
||||
|
|
@ -711,6 +677,40 @@ static void handle_graphics_pipeline(struct vk_cmd_queue_entry *cmd,
|
|||
state->blend_dirty = true;
|
||||
}
|
||||
|
||||
state->disable_multisample = pipeline->disable_multisample;
|
||||
if (pipeline->graphics_create_info.pMultisampleState) {
|
||||
const VkPipelineMultisampleStateCreateInfo *ms = pipeline->graphics_create_info.pMultisampleState;
|
||||
state->rs_state.multisample = ms->rasterizationSamples > 1;
|
||||
state->sample_mask = ms->pSampleMask ? ms->pSampleMask[0] : 0xffffffff;
|
||||
state->blend_state.alpha_to_coverage = ms->alphaToCoverageEnable;
|
||||
state->blend_state.alpha_to_one = ms->alphaToOneEnable;
|
||||
state->blend_dirty = true;
|
||||
state->rs_dirty = true;
|
||||
state->min_samples = 1;
|
||||
state->sample_mask_dirty = true;
|
||||
fb_samples = ms->rasterizationSamples;
|
||||
if (ms->sampleShadingEnable) {
|
||||
state->min_samples = ceil(ms->rasterizationSamples * ms->minSampleShading);
|
||||
if (state->min_samples > 1)
|
||||
state->min_samples = ms->rasterizationSamples;
|
||||
if (state->min_samples < 1)
|
||||
state->min_samples = 1;
|
||||
}
|
||||
if (pipeline->force_min_sample)
|
||||
state->min_samples = ms->rasterizationSamples;
|
||||
state->min_samples_dirty = true;
|
||||
} else {
|
||||
state->rs_state.multisample = false;
|
||||
state->sample_mask_dirty = state->sample_mask != 0xffffffff;
|
||||
state->sample_mask = 0xffffffff;
|
||||
state->min_samples_dirty = state->min_samples;
|
||||
state->min_samples = 0;
|
||||
state->blend_dirty |= state->blend_state.alpha_to_coverage || state->blend_state.alpha_to_one;
|
||||
state->blend_state.alpha_to_coverage = false;
|
||||
state->blend_state.alpha_to_one = false;
|
||||
state->rs_dirty = true;
|
||||
}
|
||||
|
||||
if (!dynamic_states[conv_dynamic_state_idx(VK_DYNAMIC_STATE_VERTEX_INPUT_EXT)]) {
|
||||
const VkPipelineVertexInputStateCreateInfo *vi = pipeline->graphics_create_info.pVertexInputState;
|
||||
int i;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue