From 7b2ff544176c34cd3b0f5f10caa44e497ecab0ad Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 29 May 2014 13:55:46 -0600 Subject: [PATCH] svga: added svga_shader_too_large() helper MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit To check if a shader bytcode exceeds the device limit. There's no limit when using GBS. Reviewed-by: José Fonseca --- src/gallium/drivers/svga/svga_shader.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/gallium/drivers/svga/svga_shader.h b/src/gallium/drivers/svga/svga_shader.h index 348dc0c59e2..fd500ae4401 100644 --- a/src/gallium/drivers/svga/svga_shader.h +++ b/src/gallium/drivers/svga/svga_shader.h @@ -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 */ -- 2.30.2