iris: Set MOCS for constant packets on Gen12+

It seems to be back, and we shouldn't use 0, as that's now considered
an error.

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3720>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3720>
This commit is contained in:
Kenneth Graunke 2020-02-05 00:53:10 -08:00
parent 4bac2fa3c6
commit 4d57a27504
1 changed files with 7 additions and 0 deletions

View File

@ -5193,11 +5193,15 @@ emit_push_constant_packets(struct iris_context *ice,
int stage,
const struct push_bos *push_bos)
{
UNUSED struct isl_device *isl_dev = &batch->screen->isl_dev;
struct iris_compiled_shader *shader = ice->shaders.prog[stage];
struct brw_stage_prog_data *prog_data = (void *) shader->prog_data;
iris_emit_cmd(batch, GENX(3DSTATE_CONSTANT_VS), pkt) {
pkt._3DCommandSubOpcode = push_constant_opcodes[stage];
#if GEN_GEN >= 12
pkt.MOCS = isl_dev->mocs.internal;
#endif
if (prog_data) {
/* The Skylake PRM contains the following restriction:
*
@ -5229,6 +5233,8 @@ emit_push_constant_packet_all(struct iris_context *ice,
uint32_t shader_mask,
const struct push_bos *push_bos)
{
struct isl_device *isl_dev = &batch->screen->isl_dev;
if (!push_bos) {
iris_emit_cmd(batch, GENX(3DSTATE_CONSTANT_ALL), pc) {
pc.ShaderUpdateEnable = shader_mask;
@ -5245,6 +5251,7 @@ emit_push_constant_packet_all(struct iris_context *ice,
assert(n <= max_pointers);
iris_pack_command(GENX(3DSTATE_CONSTANT_ALL), dw, all) {
all.DWordLength = num_dwords - 2;
all.MOCS = isl_dev->mocs.internal;
all.ShaderUpdateEnable = shader_mask;
all.PointerBufferMask = (1 << n) - 1;
}