summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/brw_draw.c
diff options
context:
space:
mode:
authorTopi Pohjolainen <topi.pohjolainen@intel.com>2016-01-28 23:07:55 +0200
committerTopi Pohjolainen <topi.pohjolainen@intel.com>2016-02-12 09:13:07 +0200
commit779429d063627df840c8f694a23a19e13a159146 (patch)
tree341ec1bffcf84f6151e0eb6bcb080878616d4f61 /src/mesa/drivers/dri/i965/brw_draw.c
parent76f6f59c6e26b1165d9885463b244dc4c88b61ef (diff)
downloadexternal_mesa3d-779429d063627df840c8f694a23a19e13a159146.zip
external_mesa3d-779429d063627df840c8f694a23a19e13a159146.tar.gz
external_mesa3d-779429d063627df840c8f694a23a19e13a159146.tar.bz2
i965: Validate textures before altering driver state
Validation may kick off copies and subsequently color resolves. Color resolves (and the copies themselves if ending up in meta path) will overwrite the internal driver state but are not prepared to restore it. Instead of adding that capability the validation can be simply performed before the state is updated. Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_draw.c')
-rw-r--r--src/mesa/drivers/dri/i965/brw_draw.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c
index 8737c64..c295d91 100644
--- a/src/mesa/drivers/dri/i965/brw_draw.c
+++ b/src/mesa/drivers/dri/i965/brw_draw.c
@@ -420,6 +420,15 @@ brw_try_draw_prims(struct gl_context *ctx,
if (ctx->NewState)
_mesa_update_state(ctx);
+ /* We have to validate the textures *before* checking for fallbacks;
+ * otherwise, the software fallback won't be able to rely on the
+ * texture state, the firstLevel and lastLevel fields won't be
+ * set in the intel texture object (they'll both be 0), and the
+ * software fallback will segfault if it attempts to access any
+ * texture level other than level 0.
+ */
+ brw_validate_textures(brw);
+
/* Find the highest sampler unit used by each shader program. A bit-count
* won't work since ARB programs use the texture unit number as the sampler
* index.
@@ -435,15 +444,6 @@ brw_try_draw_prims(struct gl_context *ctx,
brw->vs.base.sampler_count =
_mesa_fls(ctx->VertexProgram._Current->Base.SamplersUsed);
- /* We have to validate the textures *before* checking for fallbacks;
- * otherwise, the software fallback won't be able to rely on the
- * texture state, the firstLevel and lastLevel fields won't be
- * set in the intel texture object (they'll both be 0), and the
- * software fallback will segfault if it attempts to access any
- * texture level other than level 0.
- */
- brw_validate_textures(brw);
-
intel_prepare_render(brw);
/* This workaround has to happen outside of brw_upload_render_state()