Indeed, in the Merkle-Damgård construction, the One Way compression function has two inputs.:
- The state, that is a fixed constant†, in the first round; or the output of the previous invocation of the OWF, in subsequent rounds.
- The message block of (padded) data to be hashed.
Maybe we can somehow combine [state] with message block, for example by xoring them?
Yes we can combine state and message block into a single input of a One Way compression function, but no that can't be by xoring: that would make creating collision trivial. A better way of combining the two into a single input is concatenation.
If we only have a One Way function with the same input and output size (that is not compressing), we can't directly use the Merkle-Damgård construction.
† That constant is sometime called Initialization Vector (IV). It is part of the definition of the hash, just like the One Way compression function. A standard security arguments of the Merkle-Damgård construction for hashes assumes that the IV is chosen arbitrarily and non-maliciously, so that the hash is a random member of the family of hashes obtained with the IV as a parameter. If not, some attacks could be easier. In practice, the IV is often a nothing-up-my-sleeves number.