assert(builder);
    LLVMPositionBuilderAtEnd(builder, block);
    sampler = lp_llvm_sampler_soa_create(key->samplers, key->nr_samplers);
-   image = lp_llvm_image_soa_create(lp_cs_variant_key_images(key));
+   image = lp_llvm_image_soa_create(lp_cs_variant_key_images(key), key->nr_images);
 
    struct lp_build_loop_state loop_state[4];
    LLVMValueRef num_x_loop;
 
 
    /* code generated texture sampling */
    sampler = lp_llvm_sampler_soa_create(key->samplers, key->nr_samplers);
-   image = lp_llvm_image_soa_create(lp_fs_variant_key_images(key));
+   image = lp_llvm_image_soa_create(lp_fs_variant_key_images(key), key->nr_images);
 
    num_fs = 16 / fs_type.length; /* number of loops per 4x4 stamp */
    /* for 1d resources only run "upper half" of stamp */
 
    struct lp_build_image_soa base;
 
    struct llvmpipe_image_dynamic_state dynamic_state;
+   unsigned nr_images;
 };
 
 
 }
 
 struct lp_build_image_soa *
-lp_llvm_image_soa_create(const struct lp_image_static_state *static_state)
+lp_llvm_image_soa_create(const struct lp_image_static_state *static_state,
+                         unsigned nr_images)
 {
    struct lp_llvm_image_soa *image;
 
 
    image->dynamic_state.static_state = static_state;
 
+   image->nr_images = nr_images;
    return &image->base;
 }
 
                            unsigned nr_samplers);
 
 struct lp_build_image_soa *
-lp_llvm_image_soa_create(const struct lp_image_static_state *key);
+lp_llvm_image_soa_create(const struct lp_image_static_state *key,
+                         unsigned nr_images);
 
 #endif /* LP_TEX_SAMPLE_H */