"description": "anv/hasvk/drirc: change anv_assume_full_subgroups to have subgroup size",
"nominated": true,
"nomination_type": 0,
- "resolution": 0,
+ "resolution": 1,
"main_sha": null,
"because_sha": null,
"notes": null
DRI_CONF_VK_X11_STRICT_IMAGE_COUNT(false)
DRI_CONF_VK_KHR_PRESENT_WAIT(false)
DRI_CONF_VK_XWAYLAND_WAIT_READY(true)
- DRI_CONF_ANV_ASSUME_FULL_SUBGROUPS(false)
+ DRI_CONF_ANV_ASSUME_FULL_SUBGROUPS(0)
DRI_CONF_ANV_DISABLE_FCV(false)
DRI_CONF_ANV_SAMPLE_MASK_OUT_OPENGL_BEHAVIOUR(false)
DRI_CONF_ANV_FP64_WORKAROUND_ENABLED(false)
instance->vk.app_info.engine_version);
instance->assume_full_subgroups =
- driQueryOptionb(&instance->dri_options, "anv_assume_full_subgroups");
+ driQueryOptioni(&instance->dri_options, "anv_assume_full_subgroups");
instance->limit_trig_input_range =
driQueryOptionb(&instance->dri_options, "limit_trig_input_range");
instance->sample_mask_out_opengl_behaviour =
}
if (stages[MESA_SHADER_MESH].info || stages[MESA_SHADER_TASK].info) {
- const bool afs = device->physical->instance->assume_full_subgroups;
+ const uint8_t afs = device->physical->instance->assume_full_subgroups;
_mesa_sha1_update(&ctx, &afs, sizeof(afs));
}
anv_pipeline_hash_common(&ctx, &pipeline->base);
- const bool afs = device->physical->instance->assume_full_subgroups;
+ const uint8_t afs = device->physical->instance->assume_full_subgroups;
_mesa_sha1_update(&ctx, &afs, sizeof(afs));
_mesa_sha1_update(&ctx, stage->shader_sha1,
* a size.
*/
if (info->subgroup_size == SUBGROUP_SIZE_FULL_SUBGROUPS)
- info->subgroup_size = BRW_SUBGROUP_SIZE;
+ info->subgroup_size =
+ device->physical->instance->assume_full_subgroups != 0 ?
+ device->physical->instance->assume_full_subgroups : BRW_SUBGROUP_SIZE;
}
static void
/**
* Workarounds for game bugs.
*/
- bool assume_full_subgroups;
+ uint8_t assume_full_subgroups;
bool limit_trig_input_range;
bool sample_mask_out_opengl_behaviour;
bool fp64_workaround_enabled;
DRI_CONF_VK_X11_OVERRIDE_MIN_IMAGE_COUNT(0)
DRI_CONF_VK_X11_STRICT_IMAGE_COUNT(false)
DRI_CONF_VK_XWAYLAND_WAIT_READY(true)
- DRI_CONF_ANV_ASSUME_FULL_SUBGROUPS(false)
+ DRI_CONF_ANV_ASSUME_FULL_SUBGROUPS(0)
DRI_CONF_ANV_SAMPLE_MASK_OUT_OPENGL_BEHAVIOUR(false)
DRI_CONF_NO_16BIT(false)
DRI_CONF_SECTION_END
instance->vk.app_info.engine_version);
instance->assume_full_subgroups =
- driQueryOptionb(&instance->dri_options, "anv_assume_full_subgroups");
+ driQueryOptioni(&instance->dri_options, "anv_assume_full_subgroups");
instance->limit_trig_input_range =
driQueryOptionb(&instance->dri_options, "limit_trig_input_range");
instance->sample_mask_out_opengl_behaviour =
const bool rba = device->vk.enabled_features.robustBufferAccess;
_mesa_sha1_update(&ctx, &rba, sizeof(rba));
- const bool afs = device->physical->instance->assume_full_subgroups;
+ const uint8_t afs = device->physical->instance->assume_full_subgroups;
_mesa_sha1_update(&ctx, &afs, sizeof(afs));
_mesa_sha1_update(&ctx, stage->shader_sha1,
* a size.
*/
if (stage.nir->info.subgroup_size == SUBGROUP_SIZE_FULL_SUBGROUPS)
- stage.nir->info.subgroup_size = BRW_SUBGROUP_SIZE;
+ stage.nir->info.subgroup_size =
+ device->physical->instance->assume_full_subgroups != 0 ?
+ device->physical->instance->assume_full_subgroups : BRW_SUBGROUP_SIZE;
stage.num_stats = 1;
/**
* Workarounds for game bugs.
*/
- bool assume_full_subgroups;
+ uint8_t assume_full_subgroups;
bool limit_trig_input_range;
bool sample_mask_out_opengl_behaviour;
float lower_depth_range_rate;
</device>
<device driver="anv">
<application name="Aperture Desk Job" executable="deskjob">
- <option name="anv_assume_full_subgroups" value="true" />
+ <option name="anv_assume_full_subgroups" value="32" />
</application>
<application name="DOOMEternal" executable="DOOMEternalx64vk.exe">
- <option name="anv_assume_full_subgroups" value="true" />
+ <option name="anv_assume_full_subgroups" value="32" />
<option name="fp64_workaround_enabled" value="true" />
</application>
<application name="Wolfenstein: Youngblood(x64vk)" executable="Youngblood_x64vk.exe">
*/
#define DRI_CONF_ANV_ASSUME_FULL_SUBGROUPS(def) \
- DRI_CONF_OPT_B(anv_assume_full_subgroups, def, \
- "Allow assuming full subgroups requirement even when it's not specified explicitly")
+ DRI_CONF_OPT_I(anv_assume_full_subgroups, def, 0, 32, \
+ "Allow assuming full subgroups requirement even when it's not specified explicitly and set the given size")
#define DRI_CONF_ANV_SAMPLE_MASK_OUT_OPENGL_BEHAVIOUR(def) \
DRI_CONF_OPT_B(anv_sample_mask_out_opengl_behaviour, def, \