iris: don't do samplers for disabled stages
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 30 Jan 2018 09:44:07 +0000 (01:44 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 21 Feb 2019 18:26:05 +0000 (10:26 -0800)
src/gallium/drivers/iris/iris_state.c

index 2f6adc7578de365391641854a55ba0d33a52cb7e..f374d077d5e7bdccbc0bd107450f5d945fa78d64 100644 (file)
@@ -1910,7 +1910,7 @@ iris_upload_render_state(struct iris_context *ice,
 
    for (int stage = 0; stage <= MESA_SHADER_FRAGMENT; stage++) {
       struct iris_compiled_shader *shader = ice->shaders.prog[stage];
-      if (!shader) // XXX: dirty bits
+      if (!shader) // XXX: dirty bits...also, emit a disable maybe?
          continue;
 
       struct brw_stage_prog_data *prog_data = (void *) shader->prog_data;
@@ -1940,7 +1940,8 @@ iris_upload_render_state(struct iris_context *ice,
    }
 
    for (int stage = 0; stage <= MESA_SHADER_FRAGMENT; stage++) {
-      if (!(dirty & (IRIS_DIRTY_SAMPLER_STATES_VS << stage)))
+      if (!(dirty & (IRIS_DIRTY_SAMPLER_STATES_VS << stage)) ||
+          !ice->shaders.prog[stage])
          continue;
 
       // XXX: get sampler count from shader; don't emit them all...