mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-29 23:10:11 +01:00
draw/llvm: fix inputs to the geometry shader
We can't clip and viewport transform the vertices before we let the geometry shader process them. Lets make sure the generated vertex shader has both disabled if geometry shader is present. Signed-off-by: Zack Rusin <zackr@vmware.com> Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: José Fonseca <jfonseca@vmware.com>
This commit is contained in:
parent
8c74380b2d
commit
2532147f8b
1 changed files with 9 additions and 4 deletions
|
|
@ -1177,10 +1177,15 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant,
|
|||
LLVMValueRef fetch_max;
|
||||
struct lp_build_sampler_soa *sampler = 0;
|
||||
LLVMValueRef ret, clipmask_bool_ptr;
|
||||
const boolean bypass_viewport = variant->key.bypass_viewport;
|
||||
const boolean enable_cliptest = variant->key.clip_xy ||
|
||||
variant->key.clip_z ||
|
||||
variant->key.clip_user;
|
||||
const struct draw_geometry_shader *gs = draw->gs.geometry_shader;
|
||||
/* If geometry shader is present we need to skip both the viewport
|
||||
* transformation and clipping otherwise the inputs to the geometry
|
||||
* shader will be incorrect.
|
||||
*/
|
||||
const boolean bypass_viewport = gs || variant->key.bypass_viewport;
|
||||
const boolean enable_cliptest = !gs && (variant->key.clip_xy ||
|
||||
variant->key.clip_z ||
|
||||
variant->key.clip_user);
|
||||
LLVMValueRef variant_func;
|
||||
const unsigned pos = draw_current_shader_position_output(llvm->draw);
|
||||
const unsigned cv = draw_current_shader_clipvertex_output(llvm->draw);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue