zink: handle minmax sampler creation for VK_EXT_sampler_filter_minmax
Reviewed-by: Adam Jackson <ajax@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10248>
This commit is contained in:
parent
22e1ed5722
commit
92f5006814
|
@ -274,6 +274,23 @@ zink_create_sampler_state(struct pipe_context *pctx,
|
||||||
sci.magFilter = zink_filter(state->mag_img_filter);
|
sci.magFilter = zink_filter(state->mag_img_filter);
|
||||||
sci.minFilter = zink_filter(state->min_img_filter);
|
sci.minFilter = zink_filter(state->min_img_filter);
|
||||||
|
|
||||||
|
VkSamplerReductionModeCreateInfo rci;
|
||||||
|
rci.sType = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO;
|
||||||
|
rci.pNext = NULL;
|
||||||
|
switch (state->reduction_mode) {
|
||||||
|
case PIPE_TEX_REDUCTION_MIN:
|
||||||
|
rci.reductionMode = VK_SAMPLER_REDUCTION_MODE_MIN;
|
||||||
|
break;
|
||||||
|
case PIPE_TEX_REDUCTION_MAX:
|
||||||
|
rci.reductionMode = VK_SAMPLER_REDUCTION_MODE_MAX;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
rci.reductionMode = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (state->reduction_mode)
|
||||||
|
sci.pNext = &rci;
|
||||||
|
|
||||||
if (state->min_mip_filter != PIPE_TEX_MIPFILTER_NONE) {
|
if (state->min_mip_filter != PIPE_TEX_MIPFILTER_NONE) {
|
||||||
sci.mipmapMode = sampler_mipmap_mode(state->min_mip_filter);
|
sci.mipmapMode = sampler_mipmap_mode(state->min_mip_filter);
|
||||||
sci.minLod = state->min_lod;
|
sci.minLod = state->min_lod;
|
||||||
|
@ -310,6 +327,7 @@ zink_create_sampler_state(struct pipe_context *pctx,
|
||||||
cbci.format = VK_FORMAT_UNDEFINED;
|
cbci.format = VK_FORMAT_UNDEFINED;
|
||||||
/* these are identical unions */
|
/* these are identical unions */
|
||||||
memcpy(&cbci.customBorderColor, &state->border_color, sizeof(union pipe_color_union));
|
memcpy(&cbci.customBorderColor, &state->border_color, sizeof(union pipe_color_union));
|
||||||
|
cbci.pNext = sci.pNext;
|
||||||
sci.pNext = &cbci;
|
sci.pNext = &cbci;
|
||||||
UNUSED uint32_t check = p_atomic_inc_return(&screen->cur_custom_border_color_samplers);
|
UNUSED uint32_t check = p_atomic_inc_return(&screen->cur_custom_border_color_samplers);
|
||||||
assert(check <= screen->info.border_color_props.maxCustomBorderColorSamplers);
|
assert(check <= screen->info.border_color_props.maxCustomBorderColorSamplers);
|
||||||
|
|
Loading…
Reference in New Issue