Draw call discussion

My understanding is the following:

The number of draw calls is rather determined by the number of materials you use than the textures. The material is a collection of data (textures, parameters) and shader code that operates on that data. A texture isn’t drawn in a separate draw call of its own, it’s rather the combination of a (sub-) mesh and its materials that issues a draw call.

Assume you have 20 meshes that each uses the same 2 materials. Without optimizations, that will be 2x20=40 draw calls. Now, under certain circumstances the meshes might by batched by the engine, meaning the meshes that use the same material are combined to one (or some few) meshes and then drawn, with a corresponding reduction in draw calls. Or, if this are identical meshes (like the same tree drawn a hundred times), the engine might use hardware instancing, where the meshes are sent just once to the GPU along with an array of their transforms (position, rotation, scaling), which would get your number of draw calls down to 2.