svga: added svga_shader_too_large() helper
authorBrian Paul <brianp@vmware.com>
Thu, 29 May 2014 19:55:46 +0000 (13:55 -0600)
committerBrian Paul <brianp@vmware.com>
Sat, 31 May 2014 12:25:35 +0000 (06:25 -0600)
To check if a shader bytcode exceeds the device limit.  There's no
limit when using GBS.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
src/gallium/drivers/svga/svga_shader.h

index 348dc0c59e27b45d4881d728577ec0d64f0ac4d7..fd500ae4401618d9fb16523d12d0e32eb47bbf62 100644 (file)
@@ -41,4 +41,25 @@ svga_destroy_shader_variant(struct svga_context *svga,
                             struct svga_shader_variant *variant);
 
 
+/**
+ * Check if a shader's bytecode exceeds the device limits.
+ */
+static INLINE boolean
+svga_shader_too_large(const struct svga_context *svga,
+                      const struct svga_shader_variant *variant)
+{
+   if (svga_have_gb_objects(svga)) {
+      return FALSE;
+   }
+
+   if (variant->nr_tokens * sizeof(variant->tokens[0])
+       + sizeof(SVGA3dCmdDefineShader) + sizeof(SVGA3dCmdHeader)
+       < SVGA_CB_MAX_COMMAND_SIZE) {
+      return FALSE;
+   }
+
+   return TRUE;
+}
+
+
 #endif /* SVGA_SHADER_H */